# Shopify integration for paid acquisition

Hendrik reads Shopify orders, refunds, transactions, products, inventory, and available product cost so paid acquisition can be compared with store results.

## Questions Hendrik can help answer

- Did net order value change when paid spend changed?
- Are refunds or stock limits changing the result?
- Is product cost coverage complete enough to discuss margin?

## Illustrative example

### Review a spend increase against store outcomes

The same 28-day window and USD are used

*About this example: Synthetic data · illustrative analysis · Hendrik only acts with the permissions you give it.*

- Spend (Google Ads): US$40,000 → US$50,000
- Net order value (Shopify): US$180,000 → US$181,000
- Refund value (Shopify): US$7,200 → US$12,100

### What Hendrik checks

- **Confirm the window:** Compare the same completed 28-day periods in the same currency.
- **Review refund timing:** Check whether the current-period refunds relate to older orders before interpreting net value.
- **Check cost coverage:** Use product cost data only if its provenance and coverage are sufficient.

### What Hendrik sees

Spend increased, while net order value was nearly unchanged and refund value rose.

### What to do next

Hold the planned budget increase while the team reviews refund timing and cost coverage.

**Limit:** The comparison does not attribute orders or refunds to a specific campaign.

## What Shopify contributes

Use Shopify with ads data to compare ad spend with orders, refunds, stock, and available product costs.

## Data Hendrik reads

- **Orders and refunds:** Store order facts and refunds, with their own dates and definitions.
- **Payment state:** Transaction-derived payment state where it is available.
- **Product cost:** Item cost with provenance and coverage, not an automatic historical profit record.
- **Inventory:** Location inventory and product availability.

## Setup and access

- **Setup:** Install or claim the Shopify store in Hendrik, then confirm the shop you want to connect.
- **Permissions:** Read access to customers, inventory, orders, and products. Orders older than 60 days also require Shopify's approved read_all_orders permission.
- **Accounts:** One Shopify shop, identified by shop domain and shop ID.
- **History:** Initial history defaults to 90 days when the store has granted access to older orders. Your store permissions can limit this window. Hendrik shows actual coverage after the first sync.
- **Refresh:** Configured data streams run from hourly to every 6 hours. Hendrik shows the published freshness for each source after sync.
- **Setup timing:** Shopify starts its initial sync after authorization, account selection, and data checks. The duration depends on the selected account and history.
- **Actions:** Connecting reads Shopify data. It does not change products, inventory, or orders.
- **Availability:** Your workspace shows Connect or Request access for your account.

## What you need to connect

- Confirm the exact Shopify account is available in the workspace.
- Use a comparable reporting window and currency.
- Check cost coverage before discussing gross margin.

## Important limits

- Declared UTM values are not automatically an ad-platform campaign ID.
- A Shopify order must not be treated as causal proof that an ad caused it.
- Cost can be unavailable or estimated.

## Provider documentation

- [Shopify Admin API](https://shopify.dev/docs/api/admin-graphql)

## Start with Shopify

[Create a workspace and connect Shopify](https://app.withhendrik.com/auth?mode=sign-up&acquisition_channel=marketing&return_to=%2Fonboarding%2Factivation&cta_location=integration_markdown&landing_page_id=integration-shopify&integration=shopify)
