Flow automation with pieces

WhatsApp in Activepieces: Catch Webhook and Send HTTP request with ZapZap

Activepieces is a flow automation platform built on pieces. In the official catalog (read on 2026-11-11), the Webhook piece offers the Catch Webhook trigger, which receives HTTP requests of any method and starts the flow, and the HTTP piece offers the Send HTTP request action, which calls any URL with a method, optional authentication and a body. With those two, ZapZap fits in without a dedicated node.

Updated on

Why connect

For people who want a visual flow without hosting code: a message arrived on WhatsApp, the flow looks up a spreadsheet or a CRM and replies. Or the reverse: a new form lead triggers a WhatsApp confirmation. ZapZap has no piece of its own in Activepieces: the route is webhook and HTTP. ZapZap connects numbers through an unofficial channel: WhatsApp may limit or block any number, so pacing, consent and warm-up matter. It costs R$15 per active number per month, prepaid, with no per-message fee, and you start with a welcome credit when you verify your phone, subject to the current campaign.

Step by step

  1. 1

    Create the flow with the Catch Webhook trigger

    Create a new flow and pick the trigger Webhook > Catch Webhook, which accepts any HTTP method. Copy the URL the trigger shows. To test, fire a real event (for example, ZapZap's webhook test, POST /instances/{id}/webhook/test) and watch the flow run.

  2. 2

    Register the URL on the ZapZap instance

    Call PUT https://api.zapzapapi.com/api/v1/instances/{id}/webhook with webhook_url (the URL from the previous step, over HTTPS) and events (for example, messages). Headers x-api-key and x-api-secret, from Settings > API. Events come disabled by default: ask only for the ones you will use.

  3. 3

    Read the event body

    The envelope carries delivery_id, event_id, version, instance_id, instance_name, event and data. Use the fields in the next steps of the flow. Use delivery_id so you do not handle the same delivery twice.

  4. 4

    Send the reply with Send HTTP request

    Add the action HTTP > Send HTTP request. Method POST, URL https://api.zapzapapi.com/api/v1/{instanceId}/send/text, headers x-api-key, x-api-secret and Content-Type application/json, JSON body with number and text. Store the header values in a connection or project variable instead of typing them into every flow.

  5. 5

    Handle failures

    If the response is 429 or 5xx, try again later; 400, 401 and 403 point to a configuration error and repeating will not fix it. Test the same send with curl first (example below).

Example

# What the "Send HTTP request" step does, as a curl you can test first
curl -X POST "https://api.zapzapapi.com/api/v1/INSTANCE_ID/send/text" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ZAPZAP_API_KEY" \
  -H "x-api-secret: $ZAPZAP_API_SECRET" \
  -d '{"number":"5511999999999","text":"Hello! Your booking is confirmed."}'

# Set the webhook on the instance so the Catch Webhook trigger receives events
curl -X PUT "https://api.zapzapapi.com/api/v1/instances/INSTANCE_ID/webhook" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ZAPZAP_API_KEY" -H "x-api-secret: $ZAPZAP_API_SECRET" \
  -d '{"webhook_url":"https://YOUR-ACTIVEPIECES-WEBHOOK-URL","events":"messages"}'

Illustrative. The exact fields and endpoints are in the documentation.

What I read and what stays with you

  • Read on 2026-11-11 (activepieces.com/pieces): Catch Webhook receives HTTP of any method; Send HTTP request calls any URL with a method, optional authentication and a body.
  • I could not confirm on the pages read the exact name of each field of the HTTP action or the webhook URL format: check them in the interface of your Activepieces.
  • The X-ZapZap-Signature needs the raw body; the page read does not say whether the trigger delivers the raw body, so validate the signature only if your version allows it.

Frequently asked questions

Is there a ZapZap piece in Activepieces?

No. Use Catch Webhook to receive and Send HTTP request to send, as on this page.

Do I need a paid Activepieces plan?

The pages I read (Webhook and HTTP pieces) do not state plans or prices; check the Activepieces site before deciding.

How do I avoid replying twice to the same event?

Store the delivery_id of deliveries already handled and ignore repeats, because ZapZap retries when your endpoint does not answer with success.

Which endpoint sends text?

POST https://api.zapzapapi.com/api/v1/{instanceId}/send/text, with number and text in the JSON body.

What does ZapZap cost?

It costs R$15 per active number per month, prepaid, with no per-message fee, and you start with a welcome credit when you verify your phone, subject to the current campaign.

Start now

Create your account, connect a number in minutes and test the API with warm-up and anti-ban. R$15 per active number/month, prepaid, no lock-in.