Track events
Track AddToCart
Fire AddToCart when a visitor clicks the Add to Cart button on a product page. Meta uses it as a strong buying-intent signal for retargeting and Smart Bidding.
Quick start
One call in your button’s click handler, anywhere after pb.js is loaded — this alone is a working AddToCart event:
adsping('track', 'AddToCart', {
value: 24.90,
currency: 'USD',
content_ids: ['SKU-1043']
});Every extra field you add raises your Event Match Quality — the full payload below reaches EMQ 10/10.
Full example
Pick the tab for your stack — they all send the same event.
<script>
document.querySelector('#add-to-cart-button')
.addEventListener('click', function () {
adsping('track', 'AddToCart', {
content_name: 'Acme Hydrating Serum',
content_ids: ['SKU-1043'],
content_type: 'product',
value: 24.90,
currency: 'USD',
email: '[email protected]',
phone: '+1 415 555 1234',
firstName: 'Jane',
lastName: 'Doe',
city: 'San Francisco',
state: 'CA',
zipCode: '94107',
country: 'US',
dateOfBirth: '1990-01-15',
gender: 'f',
externalId: 'crm-12345'
});
});
</script>- HTML — replace
#add-to-cart-buttonwith your button’s selector and place the snippet anywhere after the AdsPing script tag. - React / Next.js — the call lives in the button’s
onClick; drop the component in wherever your Add to Cart button lives. - Google Tag Manager — paste the HTML snippet into a Custom HTML tag, triggered on your add-to-cart click.
- Send a field only when you actually have it. AdsPing SHA-256-hashes every personal field before it reaches Meta.
Parameters
| Field | Type | Description |
|---|---|---|
valuerecommended | number | Item price.24.90 |
currencyrecommended | string | ISO-4217 code.USD |
content_idsrecommended | string[] | Array of product SKU strings.['SKU-1043'] |
content_name | string | Product name, plain text.Acme Hydrating Serum |
content_type | string | 'product' or 'product_group'.product |
| Field | Type | Description |
|---|---|---|
emailrecommended | string | Email address, any case. The strongest match signal. |
phonerecommended | string | Any format — AdsPing normalizes it to E.164 by country.+1 415 555 1234 |
firstName | string | Given name, plain text.Jane |
lastName | string | Family name, plain text.Doe |
city | string | City name, plain text.San Francisco |
state | string | State / region code.CA |
zipCode | string | Postal / ZIP code.94107 |
country | string | ISO-3166 alpha-2 code.US |
dateOfBirth | string | YYYY-MM-DD.1990-01-15 |
gender | string | 'f' or 'm'.f |
externalId | string | Your own customer / user id, from your CRM or auth session.crm-12345 |
| Field | Type | Description |
|---|---|---|
fbp / fbc | string | Meta browser cookies — read by pb.js, fbc even built from ?fbclid= in the URL. |
client_ip_address | string | Visitor IP, captured on AdsPing's server. |
client_user_agent | string | Visitor browser, captured on AdsPing's server. |
external_id | string | Anonymous visitor id pb.js sets on first visit (your externalId is sent in addition). |
About Event Match Quality (EMQ)
Meta scores each event 0–10 on how well it can match the event to a person. Every field you send adds signal. On top of what you pass, AdsPing attaches the things it can read server-side — so you never paste these:
fbp+fbc— Meta browser cookies, read by pb.js (it even buildsfbcfrom?fbclid=in the URL).client_ip_address+client_user_agent— the visitor’s IP and browser, captured on AdsPing’s server. Meta requires these for website events; they’re sent in plaintext (not hashed).external_id— an anonymous visitor id pb.js sets on first visit.
Every personal field (email, phone, name, address) is SHA-256 hashed before it leaves AdsPing — Meta only ever receives the hash. The more real fields your payload carries, the closer you get to EMQ 10/10.
Test it
- Click the Add to Cart button on your site.
- Open your pixel’s Report → Recent events in AdsPing.
- An AddToCart row appears within ~10 seconds with a green Success badge and its EMQ score.
✓ AddToCart is live.
Every cart addition is now forwarded to Meta via the Conversions API.