Send Orders to ProfitMetrics Using Make.com — Any E-Commerce Platform
This guide covers how to send order data from any e-commerce platform to ProfitMetrics using Make.com. If your platform has a native Make.com integration or supports webhooks/API access, you can build this automation.
Prerequisites
- ProfitMetrics Public ID — Dashboard → Settings → Website → Public ID
- API access to your e-commerce platform — You need to be able to retrieve order data (order totals, line items, shipping, customer info)
- Make.com account — Free plan supports low order volumes
How It Works
Every e-commerce integration follows the same pattern:
Order event (webhook or polling)
→ Fetch full order data from your platform's API
→ Transform to ProfitMetrics payload
→ GET https://my.profitmetrics.io/l.php?v=3uh&pid={PUBLIC_ID}&o={JSON}
The only thing that changes between platforms is how you get the order data (steps 1–2). The payload format and ProfitMetrics API call (steps 3–4) are always the same.
Step 1: Trigger on New/Updated Orders
Set up a trigger in Make.com for your platform. Most platforms support one of these approaches:
| Approach | How to Set Up |
|---|---|
| Native module | Use your platform's Make.com module (e.g. Shopify, WooCommerce, Magento) with a "Watch Orders" or "Order Created" trigger. Handles authentication and pagination for you. |
| Webhook | Register a webhook from your platform and use Make.com's Webhooks → Custom webhook module to receive it. Best for platforms that support outgoing webhooks. |
| Polling | Use Make.com's HTTP → Make a request module on a schedule to poll your platform's orders API. Best for platforms without webhook support. |
If your platform has a native Make.com module, use it — it handles authentication and pagination for you.
Filtering
You typically only want to send orders in a specific status (e.g. "Completed", "Paid", "Fulfilled"). Add a filter after the trigger module to check the order status before proceeding.
Step 2: Fetch Full Order Data
Depending on your trigger, you may already have the full order data, or you may need a second API call to get line items and shipping details. You need these fields from your platform:
Required Fields
| Data | Notes |
|---|---|
| Order ID | Unique order identifier |
| Order date | When the order was placed |
| Customer email | From billing address |
| Currency | Order currency code (e.g. EUR, USD, DKK) |
| Total excl. VAT | Order total excluding tax |
| Total incl. VAT | Order total including tax |
| Line items (SKU, qty, unit price excl. VAT) | Per-product breakdown |
Recommended Fields
| Data | Notes |
|---|---|
| Shipping cost excl. VAT | |
| Shipping country (ISO2) | e.g. DK, DE, US |
| Shipping zip code |
Optional Fields
| Data | Notes |
|---|---|
| Shipping method | e.g. "Standard Shipping" |
| Shipping weight | Total weight of all items |
| Payment method | e.g. "Credit Card", "PayPal" |
| Customer first name | ProfitMetrics hashes PII server-side |
| Customer last name | |
| Customer phone | Without leading + |
Step 3: Transform to ProfitMetrics Payload
Add a Code (JavaScript) module in Make.com to map your platform's order data into the ProfitMetrics format.
Payload Structure
{
"id": "12345",
"ts": 1710700000,
"orderEmail": "customer@example.com",
"currency": "EUR",
"priceTotalExVat": 80.00,
"priceTotalInclVat": 100.00,
"products": [
{ "sku": "WIDGET-01", "qty": 2, "priceExVat": 40.00 }
],
"shippingCountry": "DK",
"shippingZipcode": "2100",
"priceShippingExVat": 5.00,
"shippingMethod": "Standard Shipping",
"shippingWeight": 1.5,
"paymentMethod": "Credit Card",
"customerFirstname": "Jane",
"customerLastname": "Doe",
"customerPhone": "4512345678"
}
Field Reference
| PM Field | Description |
|---|---|
id |
Order ID (must be a string, not a number) |
ts |
Order creation time as Unix timestamp (seconds) |
orderEmail |
Customer email from billing address |
currency |
ISO currency code |
priceTotalExVat |
Order total excluding VAT/tax |
priceTotalInclVat |
Order total including VAT/tax |
products |
Array of line items (see below) |
priceShippingExVat |
Shipping cost excluding VAT |
shippingCountry |
ISO 3166-1 alpha-2 country code |
shippingZipcode |
Shipping postal/zip code |
shippingMethod |
Name of the shipping method |
shippingWeight |
Total shipment weight |
paymentMethod |
Payment method name |
customerFirstname |
Customer first name |
customerLastname |
Customer last name |
customerPhone |
Phone number without leading + |
Product Line Items
Each item in the products array:
| Field | Description |
|---|---|
sku |
Product SKU — must match your ProfitMetrics product feed identifier |
qty |
Quantity ordered |
priceExVat |
Unit price excluding VAT |
Items without a SKU are excluded from the array.
Example JavaScript (Make.com Code Module)
Adapt the input variable names to match your platform's module output:
// Input variables (set these in the Code module's Input section):
// - order: the order object from your platform's module
// - PUBLIC_ID: your ProfitMetrics Public ID
const ts = Math.floor(new Date(order.date_created).getTime() / 1000);
const products = order.line_items
.filter(li => li.sku)
.map(li => ({
sku: String(li.sku),
qty: Number(li.quantity),
priceExVat: Number(li.price_excl_tax),
}));
const pmOrder = {
id: String(order.id),
ts,
orderEmail: order.customer_email || "",
currency: order.currency || "EUR",
priceTotalExVat: Number(order.total_excl_tax),
priceTotalInclVat: Number(order.total_incl_tax),
products,
shippingCountry: order.shipping_country_code || "",
shippingZipcode: order.shipping_zip || "",
priceShippingExVat: Number(order.shipping_cost_excl_tax || 0),
shippingMethod: order.shipping_method || "",
shippingWeight: products.reduce((sum, p) => sum + (p.weight || 0) * p.qty, 0),
paymentMethod: order.payment_method || "",
customerFirstname: order.billing_first_name || "",
customerLastname: order.billing_last_name || "",
customerPhone: (order.billing_phone || "").replace(/^\+/, ""),
};
return {
pid: PUBLIC_ID,
v: "3uh",
o: JSON.stringify(pmOrder),
};
Important: The field names above (order.date_created, order.line_items, etc.) are examples. Every platform names these differently — map them to your platform's actual API field names.
Step 4: Send to ProfitMetrics
Add an HTTP → Make a request module with the following settings:
| Setting | Value |
|---|---|
| URL | https://my.profitmetrics.io/l.php |
| Method | GET |
Query parameter v |
3uh |
Query parameter pid |
Map from Code module output → pid |
Query parameter o |
Map from Code module output → o |
No authentication is needed for this call.
Troubleshooting
| Issue | Solution |
|---|---|
| No orders syncing | Check that your trigger is active and the status filter matches your workflow. |
| Missing products | Make sure your API call returns line item data. Some platforms require an expand or include parameter. |
| 400 from ProfitMetrics | Verify Public ID is correct. Check the o parameter is valid URL-encoded JSON in the execution log. |
| Wrong SKU in ProfitMetrics | The SKU must match your ProfitMetrics product feed. Check which identifier your feed uses (SKU, product ID, variant ID) and map accordingly. |
| Missing shipping data | Not all platforms include shipping details in every API response. Check if you need a separate API call for shipment data. |
For unresolved issues, contact support@profitmetrics.io.