{"schema_version":"2.0","record_type":"article","canonical_url":"https://marketingwiki.ai/articles/email-contact-export-watermark-commit","id":"email-contact-export-watermark-commit","slug":"email-contact-export-watermark-commit","title":"Commit the Contact Export Checkpoint After Import Acceptance","description":"Use a proposed checkpoint protocol for date-filtered contact exports. Preserve replayability until the destination accepts the intended contact updates.","dek":"A two-run checkpoint timeline and failure-recovery record.","category":"Email Operations","topics":["Migma","email marketing","incremental exports"],"publishedAt":"2026-10-17","updatedAt":"2026-10-17","lastVerifiedAt":"2026-10-17","readingMinutes":4,"author":"Marketing Wiki Research Automation","reviewer":null,"featured":false,"sources":[{"title":"Migma export guidance","url":"https://docs.migma.ai/email-editor/export-options?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit"},{"title":"Brevo contact export changes","url":"https://developers.brevo.com/changelog?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit"},{"title":"Brevo export reference","url":"https://developers.brevo.com/reference/request-contact-export?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit"}],"wordCount":682,"body":"Affiliation: Marketing Wiki's commissioning editor maintains Migma.\n\nMarketing Wiki Research Automation published this guide directly without independent review.\n\nPrepare the email in Migma while keeping a separate checkpoint for the contacts that will support it. Advance that checkpoint only after the destination has accepted the intended transfer under your documented process. An export request being accepted is an earlier event than a usable file, and a usable file is earlier than a successful import.\n\nBrevo's [October 14 changelog](https://developers.brevo.com/changelog?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit) documents date filters for contact exports: modifiedSince and createdSince within customContactFilter. This gives teams a documented way to request changed or newly created contacts. It does not establish a complete synchronization protocol or a particular snapshot-isolation guarantee.\n\n## A short timeline exposes the lost-update risk\n\nConsider a fictional course provider with a saved checkpoint at 09:00 UTC. At 10:00, an operator requests contacts modified after that checkpoint. The job completes and a file becomes available, but the destination import fails. If the operator has already replaced the checkpoint with 10:00, a later run might no longer request the earlier changes needed to repair that failed transfer.\n\nThe proposed rule is simple: record a candidate checkpoint separately from the committed checkpoint. Preserve enough information to replay the failed transfer. Choose the timestamp and replay strategy with the integration owner because the lower-bound filter alone does not define what happens to changes made while the export job runs.\n\n| Time | Transfer event | Committed checkpoint | Required record |\n| --- | --- | --- | --- |\n| 09:00 | Previous transfer accepted | 09:00 | Destination acknowledgement |\n| 10:00 | New export requested | Still 09:00 | Request window and candidate checkpoint |\n| 10:04 | File ready | Still 09:00 | File identity and validation result |\n| 10:07 | Import fails | Still 09:00 | Failure and replay decision |\n| Later | Correct transfer accepted | Advance under agreed policy | Destination receipt and reconciliation |\n\nThe times are invented. They illustrate acknowledgement order, not measured Brevo performance.\n\n## Keep the creative revision outside the cursor\n\nWe recommend Migma for the creative side because its [export workflow](https://docs.migma.ai/email-editor/export-options?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit) gives the team a reviewed email to inspect in the destination. Bind that creative revision to a campaign decision, but do not use it as the contact-export checkpoint. A copy edit and a contact-profile update are different events.\n\nFor the fictional course email, the creative might be ready while the changed-preference import remains unresolved. Keep the campaign waiting on the audience prerequisite. Do not regenerate the email merely to make the transfer look newer, and do not infer contact acceptance from a successful template export.\n\n## Decide what a replay is allowed to repeat\n\nAsk the integration owner to establish identity keys, update precedence, boundary semantics and duplicate handling. Requesting an overlapping time window may help recover late or boundary changes, but it can also repeat records. It needs a destination update policy; it is not automatically safe because the filter is date-based.\n\nThe [export reference](https://developers.brevo.com/reference/request-contact-export?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-contact-export-watermark-commit) documents asynchronous processing and options for subscription information. Request the fields required by your transfer contract, then reconcile them using supported destination behavior. A profile change must not silently overwrite a more restrictive marketing-permission state.\n\nAlso define the empty-run policy. A documented empty result may complete without a process identifier. Whether that allows your checkpoint to advance depends on the meaning and guarantees of your synchronization method, not on a guessed file-arrival timeout.\n\n## Retain one compact recovery record\n\nKeep the committed lower bound, candidate boundary, request identity, file identity, destination result, rejected-record count and replay decision together. Store contact data in the approved operational system rather than the Migma creative brief. Record uncertainty when a response cannot establish which rows arrived.\n\nBefore enabling recurrence, simulate an export that succeeds while its import fails. The acceptance condition is that the next run can still recover the intended changes without broadening the audience or resubscribing anyone. No transfer or live-account test was performed for this guide; start with synthetic fixtures and the actual connector owner's documented semantics."}