DNS / Domain Tools Integration in FlowMattic
The DNS / Domain Tools app is a built-in FlowMattic application that provides comprehensive domain and network diagnostic capabilities. Perform DNS lookups, verify email domains, check SSL certificates, inspect HTTP headers, and test port connectivity — all within your automated workflows. No external API key or connection is required.
Overview
Domain and network diagnostics are essential for monitoring, validation, and troubleshooting. The DNS / Domain Tools app uses PHP’s built-in network functions to perform all operations directly from your server — no external services or API keys needed, and no data is transmitted to third-party services.
Connection Setup
DNS / Domain Tools is a core utility app — no connection setup is needed.
- No API key required
- No external service to configure
- All operations run locally on your server
- Available immediately in all FlowMattic installations using FlowMattic v6+
Simply select DNS / Domain Tools when adding an action step to your workflow.
Available Actions
The DNS / Domain Tools app provides 7 actions for domain and network diagnostics.
1. DNS Lookup
Retrieve DNS records for a domain, including A, AAAA, MX, NS, TXT, CNAME, SOA, and SRV records.
Configuration:
| Field | Required | Description |
|---|---|---|
| Domain | Yes | Domain name to look up (e.g., example.com). Protocols and paths are automatically stripped. |
| Record Type | No | Type of DNS record to retrieve. Defaults to All Records. |
Record Type Options:
| Option | Description |
|---|---|
| All Records | Returns all available record types |
| A (IPv4 Address) | Standard IPv4 address records |
| AAAA (IPv6 Address) | IPv6 address records |
| MX (Mail Exchange) | Mail server records |
| NS (Name Server) | Nameserver records |
| TXT (Text) | Text records (SPF, DKIM, DMARC, etc.) |
| CNAME (Canonical Name) | Alias records |
| SOA (Start of Authority) | Start of Authority records |
| SRV (Service) | Service location records |
Output:
| Field | Description |
|---|---|
status |
success or error |
domain |
The queried domain |
record_type |
The record type requested |
record_count |
Number of records found |
records |
Array of DNS records with type-specific fields |
ipv4_addresses |
List of IPv4 addresses (when A records are included) |
2. Reverse DNS Lookup
Resolve an IP address to its hostname and retrieve PTR records.
Configuration:
| Field | Required | Description |
|---|---|---|
| IP Address | Yes | IPv4 or IPv6 address to resolve (e.g., 8.8.8.8). |
Output:
| Field | Description |
|---|---|
status |
success or error |
ip_address |
The IP that was looked up |
hostname |
Resolved hostname |
resolved |
true if hostname was successfully resolved |
ip_version |
IPv4 or IPv6 |
ptr_records |
Array of PTR records (if available) |
Use Case: Verify reverse DNS (rDNS) configuration for mail servers, or investigate IP addresses found in logs.
3. MX Lookup
Get mail server (MX) records for a domain, sorted by priority, with IP resolution.
Configuration:
| Field | Required | Description |
|---|---|---|
| Domain | Yes | Domain name to look up MX records for (e.g., example.com). |
Output:
| Field | Description |
|---|---|
status |
success |
domain |
The queried domain |
has_mx |
true if MX records exist |
mx_count |
Number of MX records found |
mx_records |
Array of MX records sorted by priority |
Each MX record contains:
| Field | Description |
|---|---|
host |
Mail server hostname |
priority |
MX priority (lower = higher priority) |
ip |
Resolved IPv4 address of the mail server |
4. Verify Email Domain
Check whether a domain or email address can receive emails by verifying MX and A records.
Configuration:
| Field | Required | Description |
|---|---|---|
| Email Address or Domain | Yes | Full email address (e.g., [email protected]) or domain name (e.g., example.com). |
Output:
| Field | Description |
|---|---|
status |
success or error |
input |
The original input value |
domain |
Extracted domain name |
is_email |
true if input was an email address |
is_valid_format |
true if email format is valid (only when is_email is true) |
can_receive_email |
true if domain can receive emails (per RFC 5321) |
has_mx_records |
true if MX records exist |
has_a_record |
true if A record fallback is available |
has_aaaa_record |
true if IPv6 address record exists |
is_free_provider |
true if domain is a known free email provider |
mx_records |
Array of MX records with priority |
Email Deliverability Logic (RFC 5321):
- If MX records exist → can receive email
- If no MX but A record exists → can receive email (A record serves as fallback)
- If neither MX nor A records exist → cannot receive email
Free Email Providers Detected:
gmail.com, yahoo.com, hotmail.com, outlook.com, aol.com, icloud.com, mail.com, protonmail.com, zoho.com, yandex.com, gmx.com, live.com
Use Case: Validate email addresses in registration workflows, filter out free email providers for B2B lead qualification, or check deliverability before sending important emails.
5. SSL Certificate Info
Retrieve SSL/TLS certificate details including issuer, expiry date, validity, and Subject Alternative Names.
Configuration:
| Field | Required | Description |
|---|---|---|
| Domain | Yes | Domain name to check (e.g., example.com). |
| Port | No | HTTPS port. Defaults to 443. Use 8443 for alternative HTTPS ports. |
Output:
| Field | Description |
|---|---|
status |
success or error |
domain |
The checked domain |
port |
The port checked |
subject |
Certificate subject (common name) |
issuer |
Certificate authority organization name |
issuer_cn |
Certificate authority common name |
valid_from |
Certificate start date |
valid_to |
Certificate expiry date |
is_valid |
true if certificate is currently valid |
days_remaining |
Number of days until expiry (0 if expired) |
serial_number |
Unique certificate serial number |
signature_algorithm |
Algorithm used to sign the certificate |
san |
Subject Alternative Names (all domains covered) |
Use Case: Monitor SSL certificate expiry dates across your domains. Set up a scheduled workflow to check certificates and send alerts when
days_remainingdrops below 30.
6. HTTP Headers
Fetch HTTP response headers from a URL to check server configuration, security headers, and response status.
Configuration:
| Field | Required | Description |
|---|---|---|
| URL | Yes | Full URL or domain name. Protocol is added automatically if missing. |
| Method | No | Request method. Defaults to HEAD (faster, headers only). Choose GET for a full request. |
Output:
| Field | Description |
|---|---|
status |
success or error |
url |
The requested URL |
method |
The HTTP method used |
status_code |
HTTP response code (200, 301, 404, 500, etc.) |
status_message |
Status text (OK, Redirect, Not Found, etc.) |
content_type |
MIME type of the content |
server |
Server software identifier |
headers |
Complete key-value object of all HTTP headers |
Common Headers Returned:
| Header | Description |
|---|---|
content-type |
MIME type of the response |
server |
Server software (e.g., Apache, Nginx) |
cache-control |
Caching policy |
strict-transport-security |
HSTS security header |
x-frame-options |
Clickjacking protection |
x-content-type-options |
MIME sniffing prevention |
Use Case: Monitor website uptime by checking status codes, audit security headers across your sites, or verify server configurations.
7. Check Port
Test if a specific port is open on a host to verify service availability.
Configuration:
| Field | Required | Description |
|---|---|---|
| Host | Yes | Domain name or IP address (e.g., example.com or 192.168.1.1). |
| Port | Yes | Port number to check (1–65535). |
| Timeout | No | Maximum seconds to wait. Defaults to 5. Range: 1–30 seconds. |
Output:
| Field | Description |
|---|---|
status |
success or error |
host |
The checked host |
port |
The checked port |
service |
Service name for common ports (see table below) |
is_open |
true if the port is open and accepting connections |
response_time_ms |
Connection time in milliseconds (0 if port is closed) |
error_code |
Error code (0 = success) |
error_message |
Error description (empty if success) |
Common Port / Service Mapping:
| Port | Service | Port | Service |
|---|---|---|---|
| 21 | FTP | 443 | HTTPS |
| 22 | SSH/SFTP | 465 | SMTPS |
| 25 | SMTP | 587 | SMTP Submission |
| 53 | DNS | 993 | IMAPS |
| 80 | HTTP | 995 | POP3S |
| 110 | POP3 | 3306 | MySQL |
| 143 | IMAP | 5432 | PostgreSQL |
Use Case: Monitor server availability, verify that services are running (SSH, MySQL, Redis), or perform connectivity troubleshooting within your workflows.
Workflow Examples
Example 1: SSL Certificate Monitoring
Monitor SSL certificates across multiple domains and alert before expiry.
- Schedule Trigger — Run weekly.
- DNS / Domain Tools > SSL Certificate Info — Check
domain1.com. - Branch — If
{DNS1.days_remaining}is less than 30… - Email — Send alert: “SSL certificate for domain1.com expires in {DNS1.days_remaining} days.”
Example 2: Email Validation Pipeline
Validate email addresses before adding them to a mailing list.
- Webhook Trigger — Receive email address.
- DNS / Domain Tools > Verify Email Domain — Check
{Trigger1.email}. - Branch — If
{DNS1.can_receive_email}istrueAND{DNS1.is_free_provider}isfalse… - Mailchimp — Add to mailing list.
Example 3: Website Uptime Monitoring
Check multiple websites and alert on downtime.
- Schedule Trigger — Run every 15 minutes.
- DNS / Domain Tools > HTTP Headers — Check
https://mysite.com. - Branch — If
{DNS1.status_code}is not200… - Slack — Send alert: “Website is down! Status: {DNS1.status_code} {DNS1.status_message}”.
Example 4: Server Port Monitoring
Verify critical services are running on your server.
- Schedule Trigger — Run hourly.
- DNS / Domain Tools > Check Port — Check port 3306 (MySQL) on
db.example.com. - Branch — If
{DNS1.is_open}isfalse… - Email — Send alert: “MySQL service appears to be down.”
Troubleshooting
| Error Message | Cause | Solution |
|---|---|---|
| “Domain is required” | Domain field is empty. | Enter a valid domain name. |
| “Invalid IP address format” | Malformed IP address in Reverse DNS. | Enter a valid IPv4 or IPv6 address. |
| “DNS lookup failed” | Domain doesn’t exist or DNS is unreachable. | Verify the domain name is correct. |
| “Could not retrieve SSL certificate” | Connection failed or no certificate found. | Verify the domain has HTTPS enabled. |
| “cURL extension is required” | PHP cURL not installed on the server. | Contact your hosting provider. |
| “Port must be between 1 and 65535” | Invalid port number. | Enter a port number in the valid range. |
| “Connection timed out” | Host unreachable or port blocked. | Check host accessibility and firewall rules. |
Summary
| Feature | Details |
|---|---|
| Connection Required | No (built-in core app) |
| Available Actions | 7 (DNS Lookup, Reverse DNS, MX Lookup, Verify Email, SSL Info, HTTP Headers, Check Port) |
| Triggers | None |
| External APIs | None — all operations use PHP built-in functions |
| Data Privacy | No data sent to third-party services |
| PHP Requirements | cURL extension (for SSL and Port check) |