Engagement Events

Link Clicked

Triggered when a recipient clicks a link in an email.

Requirements:

  • Click tracking must be enabled for your domain
  • Links must be in the HTML body (plain text links are not tracked)

The url field contains the original destination URL that was clicked. The token field is a unique identifier for this specific link in the email.

postWebhookMessageLinkClicked

Payload

event'MessageSent' | 'MessageDelayed' | 'MessageDeliveryFailed' | 'MessageBounced' | 'MessageHeld' | 'MessageLoaded' | 'MessageLinkClicked' | 'DomainDNSError' | 'SendLimitApproaching' | 'SendLimitExceeded' required

The type of event that occurred

timestampnumber float required

Unix timestamp when the event occurred (with microsecond precision)

uuidstring

Unique identifier for this webhook delivery (use for idempotency)

Example payload

{
  "event": "MessageSent",
  "timestamp": 1704672000.123456,
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "payload": {
    "message": {
      "id": 12345,
      "token": "abc123XYZ789",
      "direction": "outgoing",
      "message_id": "a1b2c3d4-e5f6-7890@rp.arkhq.io",
      "to": "user@example.com",
      "from": "hello@yourdomain.com",
      "subject": "Welcome to our service",
      "timestamp": 1704672000.123456,
      "spam_status": "NotChecked",
      "tag": "onboarding",
      "metadata": {
        "user_id": "usr_123456",
        "campaign_id": "camp_789012"
      }
    },
    "original_message": {
      "id": 12345,
      "token": "abc123XYZ789",
      "direction": "outgoing",
      "message_id": "a1b2c3d4-e5f6-7890@rp.arkhq.io",
      "to": "user@example.com",
      "from": "hello@yourdomain.com",
      "subject": "Welcome to our service",
      "timestamp": 1704672000.123456,
      "spam_status": "NotChecked",
      "tag": "onboarding",
      "metadata": {
        "user_id": "usr_123456",
        "campaign_id": "camp_789012"
      }
    },
    "bounce": {
      "id": 12345,
      "token": "abc123XYZ789",
      "direction": "outgoing",
      "message_id": "a1b2c3d4-e5f6-7890@rp.arkhq.io",
      "to": "user@example.com",
      "from": "hello@yourdomain.com",
      "subject": "Welcome to our service",
      "timestamp": 1704672000.123456,
      "spam_status": "NotChecked",
      "tag": "onboarding",
      "metadata": {
        "user_id": "usr_123456",
        "campaign_id": "camp_789012"
      }
    },
    "status": "Sent",
    "details": "Message for user@example.com accepted by 1.2.3.4:25 (mx.example.com)",
    "output": "250 2.0.0 OK",
    "sent_with_ssl": true,
    "time": 1.51,
    "timestamp": 1704672000.123456,
    "url": "https://yourdomain.com/welcome",
    "token": "abc123def456",
    "ip_address": "203.0.113.45",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
    "server": {
      "uuid": "a1b2c3d4-e5f6-7890",
      "name": "Production",
      "permalink": "production",
      "organization": "acme-corp"
    },
    "domain": "yourdomain.com",
    "uuid": "a1b2c3d4-e5f6-7890",
    "dns_checked_at": 1704672000.123456,
    "spf_status": "Missing",
    "spf_error": "No SPF record exists for this domain",
    "dkim_status": "OK",
    "mx_status": "OK",
    "return_path_status": "Missing",
    "return_path_error": "There is no return path record at rp.yourdomain.com",
    "volume": 950,
    "limit": 1000
  }
}

Response

Webhook received successfully

Changes