# Loops: lifecycle email and migration

Evaluate Loops preferences and transactional templates before moving lifecycle email.

Canonical page: https://quillwell.com/guides/software/loops/
Updated 2026-10-31
Publisher: Quillwell Guides (https://quillwell.com/guides/about/). Editorial standards: https://quillwell.com/guides/editorial/

## The short answer

- Loops fits a team whose application can send events and use published transactional templates.
- [Loops contact properties](https://loops.so/docs/contacts/properties) exclude unsubscribed contacts from the plan count, though transactional email may still reach them.
- Preserve account-wide subscription and list preferences separately during an import.
- Compare Userlist for company relationships and Customer.io for its profile and trigger model.

## Connect the data to the message

Start with the event that should move a person into a message, then trace it from the application to the recipient. The team operating the sequence needs an agreed owner for the event and the email.

[Loops’ quickstart](https://loops.so/docs/quickstart) covers marketing and transactional email using events and contact properties. The app, API and integrations provide sending routes. Setup includes sending-domain records and contact import, followed by automated sequences.

For example, write down the expected welcome message for a direct signup and for an invited user. Superconductor describes distinguishing those cases in its own Loops messages in its [connector announcement](https://www.superconductor.com/blog/loops-connector). Reproduce the distinction with your own fixtures before enabling sends.

A contact appearing in the destination is only the first step. Inspect the event and the resulting message with the person who owns the application. Record what should happen when the event arrives late or is repeated.

## Preserve preferences before importing

Keep permission records with the original export and reconcile them before sending. Subscription state affects the plan count, but it also changes which messages a person should receive.

[Loops’ contact guide](https://loops.so/docs/contacts/properties) says unsubscribed contacts do not count toward the plan and may still receive transactional email. Sending subscribed:true can resubscribe a contact; omitting that field avoids an unintended change.

Account-wide subscription and mailing-list preferences are distinct in Loops. Its guide says list unsubscribes cannot be reversed through those contact update methods. Deleting and re-adding a contact can lose its previous subscription state.

For an unsubscribed fixture, compare the original preference with the imported record. Inspect list preferences and delivery suppression separately. Then test the intended transactional path without assuming that a marketing unsubscribe blocks it.

## Plan the transactional handoff

Match the application’s sending contract to the template workflow before replacing a transactional provider. A successful contact sync does not demonstrate a working password reset.

[Loops’ migration guide](https://loops.so/resources/migrate-mailchimp-to-loops) uses published transactional templates and dataVariables rather than raw HTML supplied at send time. Map each application variable to its template and give someone responsibility for keeping both in step.

The same Loops guide describes dashboard CSV or per-contact upserts for contacts and says there is no public bulk contact import API. Confirm the current endpoint contract before scheduling the migration.

Send owned password-reset and confirmation fixtures independently. Inspect the rendered content and the receiving path, then record any fallback your team needs. The [product onboarding guide](https://quillwell.com/guides/product-onboarding-software/) helps assess the in-app experience that accompanies these messages.

## Run a migration trial

Pause sending and use synthetic records to compare the expected state with the imported state. Include an old customer and a new signup so the team can see whether onboarding eligibility follows its intended rule.

Keep a before-and-after export with the original permission record. Trace an event through the proposed sequence and inspect whether a repeated event changes the result. Record any mismatch and its owner before cutover.

Estimate the audience using Loops’ subscription rule rather than the size of the original file alone. Request plan terms for your expected volume and retain any records needed for reconciliation. The [software trial guide](https://quillwell.com/guides/software-trial/) helps assign acceptance criteria.

## How to compare the alternatives

Consider Userlist when users belong to several companies and relationship-level roles drive targeting. Its [company account guide](https://userlist.com/docs/company-accounts/) supports many-to-many relationships and properties on the relationship itself.

Consider Customer.io when its profile model and existing import controls fit the workload. [Customer.io’s import guide](https://docs.customer.io/messaging/people/uploading-people/) offers a mapped-data preview and a choice of how empty values affect existing attributes.

Both alternatives require a migration test. [Userlist’s import guide](https://userlist.com/docs/managing-users/importing-data/) says imported users are treated as opted in. [Customer.io’s trigger guidance](https://docs.customer.io/messaging/send/automations/triggers/) says new attribute and segment triggers can admit matching backfilled users regardless of data age.

Compare the decision to stay or move in [Customer.io alternatives](https://quillwell.com/guides/compare/customer-io-alternatives/). The [lifecycle email buying guide](https://quillwell.com/guides/lifecycle-email-software/) supplies a shared migration worksheet.

## Common questions

### Can unsubscribed contacts receive transactional email in Loops?

[Loops’ contact guide](https://loops.so/docs/contacts/properties) says they may still receive transactional email and do not count toward the plan.

### Can Loops import contacts in bulk through a public API?

[Loops’ migration guide](https://loops.so/resources/migrate-mailchimp-to-loops) says no public bulk contact import API is available; it describes dashboard CSV and per-contact upserts.

### Is Loops the best lifecycle email tool?

If published transactional templates and its subscription model fit your application, consider Loops. Test the same migration and sending paths against the alternatives.

## Sources and scope

We read the linked vendor documentation on October 29, 2026.

We have not run Loops or tested migration, delivery or support.

## Sources

8 vendor pages, checked October 29, 2026

[Loops: Contact properties](https://loops.so/docs/contacts/properties)
Checked 2026-10-29. Unsubscribed contacts are free to retain, but update APIs can accidentally restore subscription state.

[Loops: Loops quickstart](https://loops.so/docs/quickstart)
Checked 2026-10-29. The setup sequence joins sending-domain configuration, contact data and event-triggered email.

[Loops: Superconductor Loops connector launch and internal usage example](https://www.superconductor.com/blog/loops-connector)
Checked 2026-10-29. A connector seller describes its own Loops adoption and the need to align application events with email-template assumptions.

[Loops: Migrate from Mailchimp to Loops](https://loops.so/resources/migrate-mailchimp-to-loops)
Checked 2026-10-29. Migration includes templates, identity, permission state and duplicate prevention rather than just copying contacts.

[Userlist: Companies and relationship-level data](https://userlist.com/docs/company-accounts/)
Checked 2026-10-29. The B2B data model distinguishes user, company and relationship properties for targeted lifecycle messages.

[Customer.io: Import people or events via CSV](https://docs.customer.io/messaging/people/uploading-people/)
Checked 2026-10-29. Contact import requires identifier mapping and explicit handling of missing values; an export preview supports verification.

[Userlist: Importing Data](https://userlist.com/docs/managing-users/importing-data/)
Checked 2026-10-29. CSV import covers users and companies, but relational imports and subscription states need special planning.

[Customer.io: Automation triggers, filters and frequencies](https://docs.customer.io/messaging/send/automations/triggers/)
Checked 2026-10-29. New trigger semantics can make historical imports start automations that legacy behavior excluded.

[Suggest a correction or send a vendor fact update](https://quillwell.com/guides/request/?type=correction&page=/software/loops/)
