> For the complete documentation index, see [llms.txt](https://help.littledata.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.littledata.io/integrations/facebook-capi/how-it-works-shopify-to-meta-conversions-api.md).

# How it works: Shopify to Meta Conversions API (CAPI)

## What you can track

Here's what you can track with Littledata's Meta connection for Shopify.

All the events below are tracked by default. You can turn events off in the settings.

### Client-side events

| **Event name**      | **Description**                                                            |
| ------------------- | -------------------------------------------------------------------------- |
| ViewContent         | A visit to a web page such as a product page or landing page               |
| InitiateCheckout \* | The start of a checkout process. For example, clicking the Checkout button |
| AddPaymentInfo \*   | The addition of customer payment information during a checkout process     |
| Purchase \*         | Completing the checkout and viewing thank you page                         |

\* Only for stores with the [Littledata Pixel](/sources/shopify/littledata-pixel.md) connected

### Server-side events

| **Event name**       | **Description**                                                                                                                           |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| AddToCart            | The addition of an item to a shopping cart or basket. For example, clicking an Add to Cart button.                                        |
| InitiateCheckout     | The start of a checkout process. For example, clicking the Checkout button.                                                               |
| AddPaymentInfo       | The addition of customer payment information during a checkout process. For example, a customer clicks to save their billing information. |
| Purchase             | Completing the checkout and receiving an order confirmation                                                                               |
| Post Purchase Upsell | The completion of an upsell purchase, that will contain only the newly added products.                                                    |
| Recurring Purchase   | The completion of an automatic recurring purchase, such as a recurring order from Recharge subscriptions.                                 |

Note: **Remove from cart**, **view item list** and **refund** events are not officially supported by Meta Conversions API. This is a limitation on Meta's side, not Littledata's.

{% embed url="<https://www.youtube.com/watch?v=mOKQF3LnN00>" %}

### Lifetime value

For each Purchase and Recurring Purchase event, Littledata sends a parameter named **`predicted_ltv`**. This parameter contains the lifetime value of the user. We pull this information directly from Shopify and then make sure that it syncs correctly with Meta.

## Profit Signal

If you enable [Profit Signal](/sources/profit-signal/how-to-use-profit-signal.md), Littledata switches the conversion value sent to Meta from revenue to the estimated profit of each order. The `revenue` field used in reporting becomes profit, so a value-based strategy such as **Highest value** or a **ROAS goal** optimizes toward profit rather than top-line revenue. Meta keeps a separate `net revenue` field, which Profit Signal does not change.

See [How to use Profit Signal](/sources/profit-signal/how-to-use-profit-signal.md) for how profit is calculated and how to enable it.

## New customer vs returning customer conversions

We automatically track four types of Meta conversions. Here's a breakdown of each and how they work:

| **Conversion Name**                      | **What it tracks**                                                                                    |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Purchase                                 | Every order from any customer is counted, **except** **recurring orders**.                            |
| New Customer Purchase - Littledata       | Counts only the first time a customer purchases on Shopify                                            |
| Returning Customer Purchase - Littledata | Counts every purchase of a customer, except the first one. This event also includes recurring orders. |
| First Recurring Purchase - Littledata    | Only the first recurring purchase of a subscription customer                                          |

{% hint style="info" %}
The default **Purchase** conversion will count any purchase event (except recurring orders) and should be the su&#x6D;**\*** of **New Customer Purchase - Littledata** and **Returning Customer Purchase - Littledata** events.\
\
\&#xNAN;**\***&#x52;eturning Customer Purchase - Littledata will include **recurring orders** as well, so total Purchase numbers might differ if your store runs subscriptions.
{% endhint %}

## How Littledata improves the event match quality score

Littledata is sending all the parameters needed by Meta to perfectly match the events. Our **Conversions API integration** follows Meta's hashing requirements, ensuring that all parameters are received and processed to increase the event match quality.

The most important parameters are the user parameters. If an event does not have at least one user parameter, Meta will not accept said event.

{% hint style="info" %}
[Here ](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters)are all the customer parameters that Meta uses.
{% endhint %}

Littledata sends all the parameters with the exception of:

* `external_id` (any unique ID from the advertiser)
* `fb_login_id` (the ID issued by Meta when a person first logs into an instance of an app)
* `lead_id` (the ID associated with a lead generated by Meta's Lead Ads)
* `ge` (gender parameter)
* `db` (date of birth)

### Action\_source parameter

The `action_source` parameter is an indicator of where the conversion was made. Knowing this is a great way to ensure your ads are targeted in the right direction.

Littledata can send this parameter with only 3 values:

| **Value**         | **Source**       |
| ----------------- | ---------------- |
| website           | Online Store     |
| system\_generated | Subscription App |
| physical\_store   | POS Order        |

### Fbp and fbc parameters

The most important parameters that we send are **`fbp`** and **`fbc`** cookies, which are the equivalent of the Google client ID. These parameters are vital in the event match quality score. Our server-side tracking technology ensures that these parameters are always available to ensure the highest event match quality.

### User agent and IP address

User agent and IP address are automatically added to the browser events, but we pass them to the server-side events as well so the event match quality can increase.

Besides `fbp`, `fbc`, user agent and IP address, there are other parameters that we send:

* **`em`** - email of the user (hashed)
* **`ph`** - phone number of the user (hashed)
* **`fn`** - first name (hashed)
* **`ln`** - last name (hashed)
* **`ct`** - City (hashed)
* **`st`** - State (hashed)
* **`zp`** - zip code (hashed)
* **`country`** - Country of the user (hashed)
* **`subscription_id`** - sent with a recurring order

All of these parameters are passed from the browser to the server so that the right user is attributed to the event.

For a more detailed schema and parameters, reach out to <help@littledata.io>.

## Custom parameters

The following parameters are included with every event sent to Meta.

| Parameter      | Description                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------- |
| market\_handle | The handle of the Shopify Market for this event. Fixed as `unassigned\_market` for orders not attributed to a market. |
| market\_id     | The internal Shopify Market ID for this event. Fixed as `0` for orders not attributed to a market.                    |

## Market parameters in Littledata events

All events sent to Meta include the Shopify Market handle by default. This allows you to break down ad performance by Shopify market in Meta's reporting, build market-specific Custom Audiences for retargeting, and allocate budgets more effectively across regions. For example, you can create separate audiences for customers from different markets, or exclude certain markets from campaigns entirely. This requires Shopify Markets to be active on your store, but does not require any per-market destination configuration within Littledata.
