# email.clicked — Webhooks — PostFrame — EternalEngine

Fires when a recipient clicks a tracked link. The payload carries the destination URL, IP address and user agent with the email's ID, subject and tags.

[Back to Webhooks](https://eternalengineos.io/features/postframe/webhooks/)

Webhook Event

# email.clicked

Fires when a recipient clicks a tracked link. PostFrame redirects them first, then sends you the destination URL, the IP address and the user agent of the click.

[Start free](https://app.eternalengineos.io/signup?plan=free&interval=annual)[All webhook events](https://eternalengineos.io/features/postframe/webhooks/)

## Click Intelligence

Destination URL

The original href is kept in the event — the tracking URL is never what you see

Per-link analytics

The Links report ranks every URL by clicks, so the same data is available without a webhook

Signed tokens

The redirect token is verified before the event is written, so a forged click records nothing

Redirect first

The recipient is forwarded immediately; the event is recorded afterwards

Payload Fields

url

The destination the recipient clicked through to

ip

The IP address of the click

user_agent

The raw browser string

tags

The email's tags, for attribution. Every event also carries data.email_id, message_id, from, to, subject, status, tags and created_at

## Keep exploring PostFrame

[### Click tracking Signed redirects on every link. Open Click tracking →](https://eternalengineos.io/features/postframe/tracking/click-tracking/)[### email.opened Fires on the first pixel load. Open email.opened →](https://eternalengineos.io/features/postframe/webhooks/email-opened/)[### email.delivered Fires when the receiving server accepts the message. Open email.delivered →](https://eternalengineos.io/features/postframe/webhooks/email-delivered/)

Questions

## Common questions, straight answers.

What is in the email.clicked payload?

The common fields — email_id, message_id, from, to, subject, status, tags, created_at — plus url (the destination the recipient clicked through to), ip and user_agent.

How do I verify the webhook came from PostFrame?

Every delivery carries an X-PostFrame-Signature header of the form v1=. It is an HMAC-SHA256 of "." using the endpoint's signing secret, which you can rotate from the dashboard at any time.

What happens if my endpoint is down?

PostFrame retries five times with exponential backoff — 10, 20, 40, 80 and 160 seconds — and records every attempt, with the HTTP status and timing, in the endpoint's delivery log.

Can I try the endpoint before real traffic arrives?

Yes. Each webhook endpoint has a Test action that sends a sample event to your URL. Emails sent in test mode never dispatch webhooks, so your integration tests do not fire production hooks.

## Run your business from one place.

Five plans, seventeen launch apps, one dashboard. Set up in under 5 minutes — change tiers any time.

[Start free$0 forever &bull; No card &bull; Upgrade any time](https://app.eternalengineos.io/signup?plan=free&interval=annual)[Talk to Sales](https://eternalengineos.io/contact/)

From $0 · Basic $9.95/mo · Save 20% on annual billing · Upgrade or downgrade any time
