Export a profile’s data
Everything Postforge holds about the person, as stored: identities, store records, orders, custom fields and their changes, consent, events, emails, lists, automation runs, coupon codes, merges and suppressions. For answering a request to see their data.
Everything Postforge holds about the person, as stored: identities, store records, orders, custom fields and their changes, consent, events, emails, lists, automation runs, coupon codes, merges and suppressions. For answering a request to see their data.
apiKey readAuthorizationBearer <token>A workspace API key (pf_…), created under Developers → API keys.
Scope: read
id*stringuuidOK
application/json- response
exportedAt*stringdate-timeprofile*identities*array<>names*array<>customers*array<>orders*array<>customFieldValues*array<>customFieldChanges*array<>consentChanges*array<>events*array<>messages*array<>listMemberships*array<>automationRuns*array<>couponCodes*array<>merges*array<>suppressions*array<>curl -X GET 'https://api.postforge.dev/v1/profiles/497f6eca-6276-4993-bfeb-53cbbbba6f08/export'{ "exportedAt": "2019-08-24T14:15:22Z", "profile": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "email": "string", "phone": "string", "locale": "string", "storeIds": [ "636b56cb-e414-46d5-b6c0-0e73b3e0106b" ], "ordersCount": 0, "lastOrderAt": "2019-08-24T14:15:22Z", "emailMarketingConsent": "subscribed", "smsMarketingConsent": "subscribed", "firstSeenAt": "2019-08-24T14:15:22Z", "lastSeenAt": "2019-08-24T14:15:22Z", "firstName": "string", "lastName": "string", "localeSource": { "source": "order", "storeId": "b8adcdc8-9238-4168-90f8-77b2d14c211c", "signal": "hard", "at": "2019-08-24T14:15:22Z" }, "stores": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "platform": "string" } ], "metrics": { "ordersCount": 0, "firstOrderAt": "2019-08-24T14:15:22Z", "lastOrderAt": "2019-08-24T14:15:22Z", "currencies": [ { "currency": "str", "ordersCount": 0, "totalSpent": { "amount": 0, "currency": "str" }, "averageOrderValue": { "amount": 0, "currency": "str" }, "firstOrderAt": "2019-08-24T14:15:22Z", "lastOrderAt": "2019-08-24T14:15:22Z" } ], "stores": [ { "currency": "str", "ordersCount": 0, "totalSpent": { "amount": 0, "currency": "str" }, "averageOrderValue": { "amount": 0, "currency": "str" }, "firstOrderAt": "2019-08-24T14:15:22Z", "lastOrderAt": "2019-08-24T14:15:22Z", "storeId": "b8adcdc8-9238-4168-90f8-77b2d14c211c" } ] }, "customFields": { "property1": "string", "property2": "string" } }, "identities": [ { "property1": null, "property2": null } ], "names": [ { "property1": null, "property2": null } ], "customers": [ { "property1": null, "property2": null } ], "orders": [ { "property1": null, "property2": null } ], "customFieldValues": [ { "property1": null, "property2": null } ], "customFieldChanges": [ { "property1": null, "property2": null } ], "consentChanges": [ { "property1": null, "property2": null } ], "events": [ { "property1": null, "property2": null } ], "messages": [ { "property1": null, "property2": null } ], "listMemberships": [ { "property1": null, "property2": null } ], "automationRuns": [ { "property1": null, "property2": null } ], "couponCodes": [ { "property1": null, "property2": null } ], "merges": [ { "property1": null, "property2": null } ], "suppressions": [ { "property1": null, "property2": null } ]}List the sources of a profile GET
Everything that wrote to the person: every store they are a customer of or did something at, with their customer record there (null while they aren’t a customer yet) and their activity, then every import that touched them (the row and what it did), then every API key that wrote to them, with its first and last write.
Count an audience POST
Starts counting the profiles (the known ones the profiles list shows) that meet `conditions`, or a segment’s: its published version or its draft, or a campaign’s audience (its draft), whose count also says what sending makes of it (`breakdown`: no email address, not subscribed, suppressed, and the recipients per locale). Answers at once with the count’s id; read it until it’s `done`. A condition that can’t be answered is a 400 with its path, before anything is counted.