Zapier

Add a Webhooks by Zapier step to the Zap that already handles this, at the start, and again at the finish.

Adding the start ping

1

Decide where this step goes: right after the very first step of the scenario, before any of the real work happens.

2

In your Zap, add an Action step. Search for and choose "Webhooks by Zapier," then the event "POST."

3

URL: paste this in.

URL
https://flowproof-ok3mquge8-hitenbs-projects.vercel.app/api/v1/events
4

Payload Type: set to json.

5

Data: add the template's keys as key/value pairs (flow, endpoint, external_id, match) — or, if your Zapier account shows a raw-JSON option instead, paste the whole template there. Either way, fill each value using the step-output picker (see the table underneath).

Template reference
{
  "flow": "your-flow-slug",
  "endpoint": "source",
  "external_id": "USE-YOUR-OWN-REFERENCE",
  "match": {
    "phone": "+15551234567"
  }
}
KeyWhat it isWhat to replace with
flowYour flow's identifierLeave as shown
endpointWhich side of the run this is"source" for the start ping, "destination" for the finish ping
external_idUnique reference for this specific runA row ID, order ID, or unique field from the incoming data. Use the tool's variable syntax.
matchFields used to pair start and finish pingsInclude whichever unique identifier is available (email, phone, order_id). Use the tool's variable syntax.

Zapier doesn't use typed template syntax: click into a field and choose the value from the insert-data dropdown of an earlier step. The inserted token displays inline, roughly like this:

Example: matching on email
"external_id": "{{Row ID}}",
"match": { "email": "{{Email}}" }
Example: matching on phone
"external_id": "{{Order ID}}",
"match": { "phone": "{{Phone}}" }
6

Wrap Request In Array: set to No.

7

File: leave empty. This request has no file attachment.

8

Unflatten: set to No.

9

Basic Auth: leave empty. FlowProofs authenticates via the header below, not Zapier's Basic Auth fields.

10

Headers: add a header named Authorization with value:

Header value
Bearer fp_live_YOUR_API_KEY
11

Continue, test the step to confirm a real send, then publish the Zap.

You'll add TWO of these steps total: one BEFORE the work step with endpoint: source, and one AFTER the work step with endpoint: destination. They share the same external_id so FlowProofs can pair them.

START OF YOUR FLOW
   |
   +--> FlowProofs Webhooks by Zapier step (endpoint: source)      <- add this first
   |
   v
  ...your existing steps, untouched...
   |
   +--> FlowProofs Webhooks by Zapier step (endpoint: destination) <- add this last
   v
END OF YOUR FLOW

Test the step, then turn the Zap on. Return to FlowProofs. The pending indicator turns green when your first ping arrives.

Screenshot placeholder

Zapier action step: Webhooks by Zapier, POST

drop a PNG at /public/docs/zapier-webhook-action.png

Adding the finish ping

1

Decide where this step goes: right after the very last step, once the record has actually landed where it should.

2

In your Zap, add an Action step. Search for and choose "Webhooks by Zapier," then the event "POST."

3

URL: paste this in.

URL
https://flowproof-ok3mquge8-hitenbs-projects.vercel.app/api/v1/events
4

Payload Type: set to json.

5

Data: add the template's keys as key/value pairs (flow, endpoint, external_id, match) — or, if your Zapier account shows a raw-JSON option instead, paste the whole template there. Either way, fill each value using the step-output picker (see the table underneath).

Template reference
{
  "flow": "your-flow-slug",
  "endpoint": "destination",
  "external_id": "USE-YOUR-OWN-REFERENCE",
  "match": {
    "phone": "+15551234567"
  }
}
KeyWhat it isWhat to replace with
flowYour flow's identifierLeave as shown
endpointWhich side of the run this is"source" for the start ping, "destination" for the finish ping
external_idUnique reference for this specific runA row ID, order ID, or unique field from the incoming data. Use the tool's variable syntax.
matchFields used to pair start and finish pingsInclude whichever unique identifier is available (email, phone, order_id). Use the tool's variable syntax.

Zapier doesn't use typed template syntax: click into a field and choose the value from the insert-data dropdown of an earlier step. The inserted token displays inline, roughly like this:

Example: matching on email
"external_id": "{{Row ID}}",
"match": { "email": "{{Email}}" }
Example: matching on phone
"external_id": "{{Order ID}}",
"match": { "phone": "{{Phone}}" }
6

Wrap Request In Array: set to No.

7

File: leave empty. This request has no file attachment.

8

Unflatten: set to No.

9

Basic Auth: leave empty. FlowProofs authenticates via the header below, not Zapier's Basic Auth fields.

10

Headers: add a header named Authorization with value:

Header value
Bearer fp_live_YOUR_API_KEY
11

Continue, test the step to confirm a real send, then publish the Zap.

You'll add TWO of these steps total: one BEFORE the work step with endpoint: source, and one AFTER the work step with endpoint: destination. They share the same external_id so FlowProofs can pair them.

START OF YOUR FLOW
   |
   +--> FlowProofs Webhooks by Zapier step (endpoint: source)      <- add this first
   |
   v
  ...your existing steps, untouched...
   |
   +--> FlowProofs Webhooks by Zapier step (endpoint: destination) <- add this last
   v
END OF YOUR FLOW

Test the step, then turn the Zap on. Return to FlowProofs. The pending indicator turns green when your first ping arrives.

Screenshot placeholder

Zapier payload fields mapped to the body template

drop a PNG at /public/docs/zapier-payload-fields.png