Eklow
Integrations

Integrations

Zapier

Start Zaps from replies, sends, opens, clicks, bounces, unsubscribes, completed campaigns and new contacts, and create contacts, tag them, add them to lists and campaigns from any app.

6 min read

The Eklow Zapier app connects with an Eklow API key. Triggers are instant: when you turn a Zap on, Zapier subscribes a webhook, and Eklow posts each event to it as it happens. When you turn the Zap off, Zapier removes the webhook.

Connecting

  1. In Eklow, open Settings → API keys and create a key (for example "Zapier"). Copy it when it is shown, because it is shown once. It starts with sc_.

  2. In Zapier, create a Zap and choose Eklow as the trigger or action app.

  3. When Zapier asks you to sign in, paste the key into API key. The connection is named after your Eklow workspace.

  4. Turn the Zap on. It appears under Settings → Integrations → Zapier → Active hooks.

A Zap only receives events from the workspace its key belongs to. Revoking the key under Settings → API keys stops every Zap subscribed with it straight away.

Triggers

TriggerFires when
New ReplyA contact replies to a campaign email and Eklow matches the reply
Email SentA campaign email is sent
Email OpenedA contact opens a campaign email (tracking must be on)
Link ClickedA contact clicks a tracked link
Email BouncedA campaign email bounces
Contact UnsubscribedA contact unsubscribes
Campaign CompletedEvery message in a campaign has been sent, failed or canceled
New ContactA contact is created: added by hand, through the API or Zapier, or by a CSV import

Every trigger except New Contact has an optional Campaign field that limits it to one campaign. When you test a trigger in Zapier, Eklow returns your most recent real event of that kind. If you have none yet, it returns a sample with the same fields.

Fields every trigger sends

New Reply
{
  "id": "5f0c1d2e-…",
  "event": "email.replied",
  "occurred_at": "2026-09-28T10:00:00.000Z",
  "workspace_id": "…",
  "contact_id": "…",
  "email": "[email protected]",
  "first_name": "Dana",
  "last_name": "Lee",
  "company": "Example Co",
  "campaign_id": "…",
  "campaign_name": "Q4 outbound",
  "campaign_status": "active",
  "message_id": "…",
  "step_number": 1,
  "variant_name": "A",
  "subject": "Re: Quick question",
  "reply_snippet": "Thanks for reaching out — can we talk Thursday?",
  "link_url": null,
  "bounce_type": null,
  "conversation_url": "https://app.eklowlab.com/dashboard/inbox?conversation=…",
  "campaign_url": "https://app.eklowlab.com/dashboard/campaigns/…?tab=stats"
}
  • id identifies the event and stays the same if a delivery is retried. It is also sent as the x-eklow-delivery header, and the event name as x-eklow-event.
  • reply_snippet is filled for replies, link_url for clicks, and bounce_type for bounces. Otherwise they are null.
  • Campaign triggers carry the campaign fields, and their contact fields are null. New Contact carries the contact fields, and its campaign fields are null.

Actions

ActionFieldsWhat it does
Create or Update ContactEmail (required), First name, Last name, Company, Job title, Time zone, Custom fieldsCreates the contact, or updates the one with that email. Only the fields you map are changed, and custom fields are merged, so any you leave out are kept. It never changes whether a contact can be emailed
Add Contact to ListList, Email, First name, Last nameCreates the contact if needed and adds it to the list
Add Tag to ContactTag, EmailCreates the contact if needed and tags it
Remove Tag from ContactTag, EmailRemoves the tag. Fails if there is no contact with that email
Add Contact to CampaignCampaign, Email, First name, Last name, CompanyCreates the contact if needed and adds it to the campaign's audience. A running campaign schedules the contact within a few minutes; a draft or paused campaign sends when it is launched or resumed. Refused if the contact is on the suppression list, has bounced, unsubscribed or replied, or is excluded by the campaign's audience rules
Pause CampaignCampaignPauses a running campaign
Resume CampaignCampaignResumes a paused or completed campaign with its saved audience, as the Resume button in the app does
Unsubscribe ContactEmail, ReasonAdds the email to the suppression list, so nothing more is sent to it

Searches

  • Find Contact: by exact email address, ignoring case.
  • Find Campaign: by name. An exact name match is returned first.

Testing

In Eklow, Settings → Integrations → Zapier → Send sample to all hooks posts a sample event to every active hook and shows which ones failed. Each hook also shows its last delivery result, e.g. Delivered 200 or Failed 500.

Delivery and retries

  • Events are delivered from a background queue, so a slow Zap never delays sending.
  • A failed delivery (5xx, 408, 429 or no answer) is retried up to 8 times with increasing delays. A 429 waits for the Retry-After time. Other 4xx answers are not retried.
  • If Zapier answers 410 Gone (the Zap was deleted), Eklow removes the hook at once.

Troubleshooting

What you seeWhat it meansWhat to do
Zapier shows “API key is invalid or revoked.”The key was mistyped or switched off. A key is switched off for good when the person who created it leaves the workspace, is removed, is no longer an admin, is suspended, or deletes their accountAn admin creates a new key, then reconnects the account in Zapier
Zapier shows “This API key has expired.”The key reached the expiry date chosen when it was created. Its Zaps stopAn admin creates a new key, then reconnects the account in Zapier
Zapier shows “The person who created this API key no longer has admin access to this workspace.” (api_key_owner_inactive)The person who created the key is no longer an admin or owner here, or their account is suspended or deleted. Its Zaps stopAn admin creates a new key, then reconnects the account in Zapier
plan_feature_unavailableThe workspace's plan does not include integrationsUpgrade to Pro
contact_not_eligible on Add Contact to CampaignThe contact is suppressed, bounced, unsubscribed, replied, or excluded by the campaignThe error names the reason. Nothing is added
invalid_status on Pause or ResumeOnly a running campaign can be paused, and only a paused or completed one resumedCheck the campaign's status
A hook shows Failed or UnreachableZapier did not accept the last deliveryCheck the Zap's history in Zapier. The next event retries
A Zap no longer runsThe Zap was turned off or deleted, or its API key was switched off or expired. It also stops if the person who connected it while signed in left the workspace, was removed, became a viewer, was suspended, or deleted their accountTurn the Zap on again, or reconnect it in Zapier with a new key from a current admin
A hook is listed under Not deliveringIts API key was switched off or expired, or the person who created it lost access. Eklow sends it nothingDelete the hook, then reconnect the Zap in Zapier with a new key

Disconnecting

Turning a Zap off unsubscribes its hook. To stop one hook from Eklow, delete it under Active hooks (or Not delivering); its Zap then receives nothing more. Revoking the API key stops every Zap connected with it.

Was this page helpful?

Related articles