Meta CAPI Error Code 100 (Invalid Parameter) occurs when your JSON payload violates Meta Graph API schema validation rules. The most common causes are: (1) Missing required field 'action_source' (must equal 'website', 'app', or 'physical_store'), (2) Negative or non-numeric conversion values, (3) Invalid 3-letter ISO currency codes (e.g. passing '$' or 'US' instead of 'USD'), or (4) Passing an event_time older than 7 days.
1. The Anatomy of Meta Graph API Error 100
Error Code 100 is Meta's catch-all HTTP 400 Bad Request exception. When your server makes an API call, Meta validates every parameter against its strict schema. If even a single line item contains an invalid property, Meta rejects the entire payload batch.
In e-commerce operations, this often happens silently: a customer with a foreign currency or a free clearance item triggers an order, and the server receives Error 100, dropping the conversion event without alerting the marketing team.
- Missing action_source: The most common cause of Error 100 in v17.0+ APIs.
- Malformed Currency Codes: Passing '$' or lower-case 'usd' instead of uppercase ISO 'USD'.
- String Numbers in Value: Passing `'125.00'` as a string instead of a floating-point numeric float `125.00`.
2. Comparative Analysis: Standard Tracking vs CAPI Control
The table below outlines the architectural and financial differences between passive conversion tracking and active signal governance:
| Faulty Parameter | Error Message Sub-Code | The Immediate Fix |
|---|---|---|
| Missing action_source | Param action_source is required | Add `"action_source": "website"` to event object |
| Invalid Currency | Param currency must be valid ISO 4217 | Normalize currency string to uppercase: `"currency": "USD"` |
| Negative Value | Param value must be greater than or equal to 0 | Clamp negative profit margins to `0.00` or `0.01` |
| Timestamp > 7 Days | Timestamp must be within 7 days | Ensure `event_time` is current UTC unix epoch seconds |
3. Edge Schema Validation Middleware in CAPI Control
CAPI Control intercepts outbound payloads and automatically sanitizes formatting defects before dispatching to Meta:
// Schema Validator Middleware in CAPI Control
export function sanitizePayloadSchema(event) {
// 1. Enforce action_source
event.action_source = event.action_source || "website";
// 2. Validate currency code (Must be 3 uppercase letters)
if (event.custom_data?.currency) {
event.custom_data.currency = event.custom_data.currency.toUpperCase().trim().slice(0, 3);
}
// 3. Ensure numeric conversion value
if (event.custom_data?.value !== undefined) {
const numericVal = parseFloat(event.custom_data.value);
event.custom_data.value = isNaN(numericVal) || numericVal < 0 ? 0.00 : numericVal;
}
return event;
}
How to Deploy CAPI Control to Fix This Today
- Step 1: Check your server application logs for the exact `error_subcode` returned by Meta.
- Step 2: Verify that `action_source: 'website'` is explicitly included in every event object.
- Step 3: Deploy CAPI Control to automatically sanitize and normalize schema formatting.
- Step 4: Confirm that events return HTTP 200 with zero error subcodes.
Frequently Asked Questions
What does error subcode 2804003 mean?
This subcode indicates that `action_source` is missing from one or more event objects in the data array.
Can I pass custom properties inside custom_data?
Yes! Meta allows custom key-value pairs (e.g. `"profit_tier": "gold"`) inside `custom_data`, but root-level parameters must strictly conform to the official API specification.
Does CAPI Control retry events that fail with Error 100?
CAPI Control auto-repairs common schema defects and retries the request instantly, preventing lost data.
Ready to steer Meta & Google toward your most profitable traffic?
Drop in CAPI Control in under 2 minutes. Transmit 100% of conversion signals free forever, or activate autonomous signal AI agents to get 3x better ad traffic.