Migrate from Notifuse
To migrate from Notifuse, you connect ReputeCast to your Notifuse instance with a workspace API key and import its lists, each contact’s status on every list, and, if you want, its email templates. ReputeCast only reads from the Notifuse API; nothing changes in Notifuse.
Before you begin
Section titled “Before you begin”- You need the
subscribers:importpermission (Owner, Admin and Editor have it). - Create an API key in the Notifuse workspace you’re moving. Only the workspace owner can create one, and the token is shown once. ReputeCast only reads, so a key scoped to Contacts read and Lists read is enough, plus Templates read to bring the templates. Source: Notifuse, Admins & API Keys (checked October 2026).
- ReputeCast must reach your Notifuse instance over HTTP or HTTPS. An instance on a private or internal network is refused unless the instance turns on
providers.allow_private_networks(see the configuration reference). - Read how a migration carries consent if this is your first import.
Import your Notifuse workspace
Section titled “Import your Notifuse workspace”-
Open Import contacts and choose Notifuse.
-
Enter the Server address of your Notifuse instance, such as
https://notifuse.example.com, paste the key into API key and select Connect. ReputeCast finds the workspace the key belongs to and lists its lists with their counts. -
Tick the lists to import and pick the ReputeCast list each one goes into. Leave Import templates on to bring the templates (see below). Keep pulling suppressions from your sending providers on, then continue to field mapping.
-
Map the fields.
emailis required; the other Notifuse contact fields and your custom fields are matched by name. -
Check the consent step (see the next section), run the preview and start the import. The templates are imported when the contacts are in.
What moves from Notifuse
Section titled “What moves from Notifuse”- Lists become the ReputeCast lists you chose. A contact’s status is read on each list, but a suppression is per address: an unsubscribe, bounce or complaint on any one Notifuse list suppresses the address for every ReputeCast list.
- Contact fields:
first_name,last_name,full_name,external_id,phone,country,language,timezone,job_titleand the address fields. - Custom fields (
custom_string_1,custom_number_1and so on) arrive under the label you gave them in Notifuse, such asplanfor a field labelled “Plan”. Number and date fields are offered with those types, and JSON fields arrive as JSON text. Labelled fields are always offered; unlabelled ones only when the first 100 contacts of a chosen list use them. - Dates: the date a contact joined a list becomes the contact’s creation date and, for active subscriptions, its consent evidence.
- Phone numbers can be mapped to the contact’s phone. SMS consent comes in only when columns for the consent and its date, source and text are mapped, so a Notifuse number usually arrives without SMS consent.
| Status on a Notifuse list | Becomes in ReputeCast |
|---|---|
active |
Subscribed · confirmed, with the subscription date as evidence (or pending, or Skip) |
pending |
Subscribed · pending, with a re-permission email (or Skip) |
unsubscribed |
Suppressed · unsubscribed: no Broadcasts or Automations, System mail allowed (locked) |
bounced |
Suppressed · hard bounce, all streams (locked) |
complained |
Suppressed · complaint, all streams (locked) |
Templates
Section titled “Templates”With Import templates on, ReputeCast reads the workspace’s email templates after the contacts:
- Transactional templates become transactional template drafts. Nothing is published, so your app keeps sending the live versions until someone publishes a draft. Contact fields such as
contact.first_namebecome plain variables (first_name), because transactional mail is sent to an address, not a contact profile. - Marketing, welcome and other templates become saved templates in the composer, keeping their contact fields. A name that’s already taken gets a number, such as “Welcome (2)”.
- Notifuse’s own system emails (double opt-in, unsubscribe, bounce and blocklist emails) stay behind: ReputeCast sends its own.
Templates built in Notifuse’s visual editor arrive as MJML; code-mode templates bring their MJML source. The import log and summary say how many arrived and how many need a manual fix, such as a Liquid filter ReputeCast doesn’t have. Import transactional templates explains each conversion note. If the template step fails, the contacts are imported anyway and the log says why.
What stays in Notifuse
Section titled “What stays in Notifuse”Broadcasts and their statistics, automations, segments, message history, webhooks and provider settings are not imported. Rebuild segments and automations with segments and automations.
Rate limits
Section titled “Rate limits”ReputeCast reads 100 contacts per request, one request at a time, and backs off when the instance answers 429 or a 5xx error:
| Setting | Default | How to change |
|---|---|---|
| Largest CSV or XLSX file | 100 MB and 500,000 rows (XLSX reads the first sheet) | Fixed |
| Source API rate limit (429) | Up to 5 retries, each after the source's Retry-After (2 s when absent, at most 60 s); then the import pauses and resumes by itself after 1 minute | Resume now, or Slow down to 3 req/s on the paused import |
| Source server or network errors | Up to 5 retries, after 1, 2, 4, 8 and 16 s | Fixed |
Check that it worked
Section titled “Check that it worked”- The summary shows how many contacts were imported, merged, suppressed, left pending and skipped, and how many templates arrived as drafts and saved templates.
- Open Transactional: the imported transactional templates are listed as drafts.
- Open Audience, then Suppression list: unsubscribed, bounced and complained contacts are there.
Troubleshooting
Section titled “Troubleshooting”- “Notifuse rejected the API key: it isn’t attached to a workspace.”: the key was removed, or it belongs to another instance. Create a new key in the right workspace.
- “Use the full address, like https://lists.example.com.”: the address has no
http://orhttps://. - “That address is on a private or internal network.”: use the instance’s public address, or have the operator turn on
providers.allow_private_networks. - “Notifuse rejected the API key (…)” while reading contacts or templates: Notifuse names the area the key’s scope is missing (Contacts, Lists or Templates read). Widen the key on the Notifuse Team page, then connect again.
- “Templates weren’t imported: …” in the log: the contacts are in. Open Transactional, then Import templates to bring the transactional templates on their own (import transactional templates).