Meta

WhatsApp CAPI Software with Konektor.id

Konektor.id is WhatsApp CAPI software for Click-to-WhatsApp ads. Konektor.id stores ctwa_clid from the first message. When a lead status changes, it sends LeadSubmitted, QualifiedLead, and Purchase from the server to Meta through the Conversions API. The Delivery log shows whether Meta accepted the event. Meta still decides reporting and attribution.

From Rp199.000/month. 14-day trial.

Why can a pixel not see a WhatsApp chat?

A pixel is a small piece of code on a web page. It works when the browser of a visitor opens that page. It records the visits, clicks, and purchases that happen on the page.

A Click-to-WhatsApp ad has no page. A person taps the ad, and WhatsApp opens with an empty chat. The conversation, the offer, and the transfer all happen in the chat app. None of those steps passes through a browser.

So Meta knows only that someone started a chat. Meta does not know who paid in the end. The ad system then learns from the earliest signal, not from the most valuable one.

The way out is the Conversions API, or CAPI. Your server sends the event to Meta directly. The sending does not depend on the browser of the buyer. For that reason CAPI can report a sale that closes in a chat, on the phone, or in a shop.

For a chat that comes from an ad, Meta offers a dedicated route. Meta calls it the Conversions API for business messaging. It uses the click identifier of the Click-to-WhatsApp ad, which is ctwa_clid. This page explains that route and how Konektor.id runs it. For the general set-up of Meta ads, read Meta ads tracking software.

A made-up example

Take a shop called Batik Contoh. It sells shirts with a Click-to-WhatsApp ad. The names and amounts below are made up.

A possible buyer named Dewi taps the ad and writes, "Do you have a shirt in size L?" Meta adds ctwa_clid to that message. Konektor.id stores it on the lead of Dewi.

Support replies and sends a photo. Dewi likes it, so support changes her status to Qualified. Meta receives QualifiedLead. Two days later Dewi transfers IDR 350,000. Support changes the status to Purchase and enters the Closing value. Meta receives Purchase with that value.

With no sending from the server, Meta would stop at the first chat of Dewi.

What does one CAPI event hold for a chat?

One event is one small message from your server to Meta. It answers four questions: what happened, when, to whom, and from which ad.

Event contentPurposeForm when sent
Event name (event_name)Says what happenedLeadSubmitted, QualifiedLead, or Purchase
Time (event_time)Says when the status changedUnix timestamp
Event ID (event_id)Identifies one event in a unique wayOne ID for each event
Source (action_source)Tells Meta that this is a chatbusiness_messaging
Channel (messaging_channel)Names the chat appwhatsapp
Click identifier (ctwa_clid)Links the chat to the adAs it is, with no hash
WhatsApp Business accountSays who owns the chatNumeric WABA ID, when the connection stores it
Email and phone numberHelp Meta match the personSHA-256 hash, when the lead has them
Value and currencySay the size of the saleOnly if you turn them on

Meta states that ctwa_clid must not be hashed. Meta asks for email and phone number as hashes. The source is in the Sources section.

Konektor.id does not send fbc on a business messaging event. That identifier belongs to a click to a website, not to a click to a chat.

How does Konektor.id build and send that event?

Konektor.id runs five stages. All of them run on the server.

  1. Meta adds ctwa_clid to the first message from the ad. Your WhatsApp channel passes it on, and Konektor.id stores it on the lead. An owner can see the value under Attribution Parameters in the lead detail.
  2. Your team changes the lead status. An automation rule can do it as well.
  3. Konektor.id reads the Event for each lead status table. That table decides the event for the new status.
  4. Konektor.id builds the event shown above and sends it to the CTWA dataset of your WhatsApp Business Account. You do not need to look for a Dataset ID. When you press Log in with Meta, Konektor.id asks Meta to use the existing dataset or to create one.
  5. The result of the sending goes to the Delivery log.

Konektor.id uses only the event names that Meta accepts on this route. The Qualified status becomes QualifiedLead. The Purchase status becomes Purchase. Any other status that has an event for Meta becomes LeadSubmitted. The Lost status is not sent on this route, because the event would be read as a new lead.

What is the difference between the business messaging route and the website event route?

Meta keeps two routes apart. Both use the Conversions API, but the destination and the content differ.

Business messaging routeWebsite event route
FitsA chat from a Click-to-WhatsApp adA visit and a lead from a landing page
Click identifierctwa_clidfbc and fbp
DestinationThe dataset of the WhatsApp Business AccountYour pixel or the dataset of your pixel
Event sourcebusiness_messagingwebsite
Event namesThree names: LeadSubmitted, QualifiedLead, PurchaseOther standard Meta events, for example Lead or AddToCart
Set-upSet up CTWA and Log in with MetaMeta Pixel ID and Access Token in Website Tracking

The chat route uses a dataset and permissions that differ from the token of a website pixel. Do not paste a CTWA token into the Access Token field of the pixel.

One more point: when a number has no CTWA connection that is ready, Konektor.id does not drop the event. The event goes out through the normal Meta route as a chat event. The Delivery log marks it CTWA backup. You can repair the connection, then resend a row that qualifies as Meta CTWA.

How do you prove that Meta accepted the event?

Keep three proofs apart. Do not mix them.

  1. The local connection is ready. Your number shows Ready - Meta login. This means Konektor.id checked the permissions and the access. This status does not prove that an event arrived.
  2. Meta accepted the event. Open Conversions > Delivery log. A Meta CTWA row with the status Sent means that Meta accepted that event. Your number also shows Meta accepted a CTWA event.
  3. Ads Manager reports the conversion. This is a decision of Meta. Check it yourself in Ads Manager. Konektor.id cannot prove it.

The badge in the Platform column shows only the route. Meta CTWA means the dedicated chat route. CTWA backup means the backup route. Meta CAPI means the normal sending. The status Sent on the same row shows the result.

The other statuses in the Delivery log are Queued, Failed, and Skipped. Skipped means that Konektor.id left the event out on purpose, for example because of Strict mode, or because the lead already sent the same event.

How is a double event prevented?

Meta states that it does not help to deduplicate business messaging events. The advertiser must make sure that one event does not arrive twice.

Konektor.id uses one rule: each kind of event goes out once for each lead. One lead sends one LeadSubmitted, one QualifiedLead, and one Purchase. A later status that would repeat one of them shows as Skipped in the Delivery log. A Meta CTWA row that is already Sent also blocks a resend for the same event and dataset.

For the website route, Meta merges a pixel event and a server event when the event name and the event ID are the same. The time window is 48 hours, according to the Meta documentation. Konektor.id sends a unique ID for the server event. For the merge to work, the pixel event in the browser must use the same ID.

Ad policy

Your ads still follow the Meta Advertising Standards. Konektor.id does not change those rules. Konektor.id only sends the conversion data that your lead already holds. Do not put sensitive data in an event name that you set yourself. The policy link is in the Sources section.

Which events does Konektor.id send to Meta Ads?

EventWhen it is sent
LeadSubmittedFor a chat from a Click-to-WhatsApp ad on a number that is linked to the CTWA dataset. This event stands for the early and middle statuses that have an event for Meta, for example New or Responded. Sent once for each lead.
QualifiedLeadWhen the lead status becomes Qualified and the Meta cell of that status still holds the built-in event. If you replace that cell, the event goes out as LeadSubmitted. Sent once for each lead.
PurchaseWhen the lead status becomes Purchase. The event carries the Closing value if you turn on Send conversion value and choose Closing value as the Value source. Sent once for each lead.
Chat event (backup route)When a lead carries ctwa_clid, but its number has no CTWA connection that is ready. The event still goes out through the normal Meta route. The Delivery log marks it CTWA backup. Meta does not record it as a business messaging conversion.

Click identifiers: ctwa_clid

What do you need?

  • A Click-to-WhatsApp ad on Meta that points to your business WhatsApp number. An organic chat carries no ctwa_clid.
  • That number is linked to Konektor.id through Official WhatsApp Business, a QR scan, or a partner provider that passes on ad data.
  • The WhatsApp Business Account ID (WABA ID) of that number, and the Facebook account that is admin of the business that owns the number, for the Log in with Meta button.
  • Meta is added in Website Tracking, so the events have a place to go.
  • Your team or an automation rule changes the lead status. With no status change, no event goes out.

What are the limits?

  • Konektor.id can prove one thing: Meta accepted the event, shown by a Meta CTWA row with the status Sent. You must check the reporting and attribution in Ads Manager yourself, in Meta.
  • The business messaging route is built only from chats that hold ctwa_clid. A chat with no ad click, and a chat from an ad shown in WhatsApp Status, has no such identifier.
  • With no CTWA connection that is ready, the event goes out as a normal chat event. Meta does not record it as a business messaging conversion.
  • The CTWA dataset route carries only three event names: LeadSubmitted, QualifiedLead, and Purchase. The Lost status and PageView are not sent on this route.
  • Each kind of event goes out once for each lead, because Meta does not filter repeated business messaging events.
  • Konektor.id does not detect a payment by itself. A sale is sent only after your team or a rule changes the lead status to Purchase.
  • The Pancake provider does not pass ctwa_clid. A lead from an ad through Pancake cannot use this route.
  • A QR scan number reads ad data through an unofficial route. Use Official WhatsApp Business for your main operation.
  • Konektor.id does not promise cheaper ads or a set ad result.

Who is it for, and who is it not for?

Good fit for

  • Businesses that run Click-to-WhatsApp ads and close the sale in chat, and want Meta to know which chats became buyers.
  • Support teams that already record lead statuses and are ready to turn those statuses into a signal for the ads.
  • Advertisers who want delivery proof they can read themselves, not only a promise that events were sent.

Not a fit for

  • Businesses that close the sale fully on a website checkout page, with no WhatsApp conversation.
  • Businesses that use Pancake for Click-to-WhatsApp ads and need the CTWA dataset route.
  • Advertisers who look for a promised cost per result or a guaranteed report in Ads Manager.

How do you set it up?

  1. Connect your WhatsApp number

    Open Connection > Connect WhatsApp and choose the path of your number. After the connection succeeds, open Connection > Numbers & CTWA.

  2. Add Meta in Website Tracking

    Open Tracking & Ads > Website Tracking, then click Add ad platform. At Where do your ads appear?, choose Facebook and Instagram. Enter the Meta Pixel ID and the Access Token, then click Save.

  3. Set up CTWA

    In Connection > Numbers & CTWA, click Set up CTWA on the number row. Enter the WhatsApp Business Account ID (WABA ID), then click Log in with Meta.

  4. Check the connection

    Click Manage CTWA on the same number, then click Check connection. This button checks permissions and access without sending a test purchase.

  5. Set the events and the value

    Open Tracking & Ads > Conversions. Read the Event for each lead status table. Turn on Send conversion value under Conversion value, choose Closing value, then click Save changes.

  6. Change the status from an ad chat

    Send a chat through your ad. Change the lead status to Qualified, then to Purchase. Enter the Closing value and click Save closing.

  7. Read the Delivery log

    Open Conversions > Delivery log. A Meta CTWA row with the status Sent means that Meta accepted the event. Check Ads Manager separately.

How much does it cost?

From Rp199.000/month. 14-day trial.

PlanPer month
StarterRp199.000
ProRp499.000
EnterpriseRp1.999.000

See all prices

Frequently asked questions

What is WhatsApp CAPI?

WhatsApp CAPI means sending conversion events from your server to Meta for chats that start from a Click-to-WhatsApp ad. Meta calls the route Conversions API for business messaging. Konektor.id runs it when a lead status changes.

Can a website pixel see a sale that closes in a WhatsApp chat?

No. A pixel sees only the pages that open in a browser. A Click-to-WhatsApp ad opens no page, and a payment in chat does not pass through a browser. For that reason the event must come from a server.

Which data must a WhatsApp CAPI event hold?

The event name, the time of the event, an event ID, the click identifier ctwa_clid, and the identity of your WhatsApp business. The email and phone number of the lead go along as hashes when they exist. Purchase also carries a value if you turn it on.

Must ctwa_clid be hashed?

No. Meta asks for ctwa_clid as it is. Hashing applies to contact data such as email and phone number. Konektor.id follows that rule.

What is the difference between a business messaging event and a normal website event?

A business messaging event goes to the dataset that belongs to your WhatsApp Business Account and uses ctwa_clid. A website event goes to a pixel and uses browser data such as fbp. Meta treats them as two separate routes.

How do I know that a WhatsApp CAPI event reached Meta?

Open Conversions > Delivery log. A Meta CTWA row with the status Sent means that Meta accepted the event. A badge alone is not proof. You check the report in Ads Manager yourself.

Why does my event show CTWA backup?

The lead has ctwa_clid, but the CTWA connection of that number is not ready. Open Manage CTWA, click Check connection, then create one new conversion. A backup row that qualifies can be resent as Meta CTWA.

Can Meta count the same event twice?

Meta does not help to deduplicate business messaging events. For that reason Konektor.id sends each kind of event once for each lead. A repeat shows as Skipped in the Delivery log.

Next steps

Sources