# πŸ“ˆ Tracking Conversions with the LettrLabs API Use the `/v1/conversions` endpoint to send a list of conversion events. This allows LettrLabs to perform matchback attribution between direct mail and real-world outcomes like sales or signups. ## πŸ“€ Endpoint **POST** `/v1/conversions` Sends multiple conversion events in a single request. The system will validate each record and return detailed feedback per item. ## 🧠 Principles for Best Results 1. βœ… **Provide at least one piece of identifiable information** Acceptable identifiers include: - `primaryEmail` / `secondaryEmail` - `primaryPhoneNumber` / `secondaryPhoneNumber` - `address` (address1, city, state, zip) - `couponCode` 2. πŸ” **The more information you provide, the better the match accuracy.** Including multiple identifiers increases the likelihood of correctly linking the conversion to a mailed recipient. 3. πŸ’° **Every conversion must include a revenue amount** Use the `revenue` field to specify the value of the conversion event. 4. πŸ•’ **Provide an event date in UTC** Use the `eventDate` field to indicate when the conversion occurred. If omitted, the current time will be used β€” this is only recommended for real-time event-driven systems. 5. πŸ†” **Use Unique ID and CRM ID for passthrough tracking** Fields like `uniqueId` and `crmId` are recommended for connecting conversion records back to your internal CRM or customer journey systems after exporting data from LettrLabs. 6. πŸ›‘ **Provide Order ID to avoid duplicates** If `orderId` is not provided, each event is treated as a unique record β€” even if it’s a duplicate submission. 7. πŸ‘€ **Customer ID helps tie conversions to users** Use `customerId` if available. This improves tracking and aggregation accuracy. 8. πŸ” **Primary vs. Secondary Identifiers** You can use `primary` and `secondary` versions of address, email, and phone fields. There is no difference in how they match β€” they are useful for different data models (e.g., billing vs. shipping, personal vs. business). ## πŸ“ Request Example ```json [ { "firstName": "John", "lastName": "Smith", "primaryEmail": "john@example.com", "primaryPhoneNumber": "1234567890", "primaryAddress": { "address1": "123 Main St", "city": "Denver", "state": "CO", "zipCode": "80202" }, "revenue": 249.99, "eventDate": "2025-06-01T15:23:00Z", "orderId": "ORDER-123", "couponCode": "SUMMER25", "uniqueId": "abc-xyz-789", "crmId": "crm-999", "customerId": "cust-001" } ] ``` ## βœ… Response Returns a summary including: - Total records - Valid and invalid records - Details on validation errors/warnings (if any) ## πŸ§ͺ Validation Logic - Records with missing `revenue` or all identifiers will be **rejected**. - Invalid addresses will **not** be matchable. - You may submit partial records, but accuracy may suffer. ## πŸ›‘ Error Handling - **422** - All records invalid. Check `Metadata` for detailed issues. - **400** - Malformed request. - **401** - Invalid or missing API key. LettrLabs uses the submitted conversion data to power analytics, attribution models, and ROI insights for your direct mail campaigns.