Skip to content
Docs menu

Guides

Features

API

Integrations

Imports

An import brings an audience over from Mailchimp. You upload the files Mailchimp exports, tell Wakio what each column means, and Wakio turns every row into a contact. Under Imports you start one and read the report afterward.

What an import does

Every row of every file becomes a contact, including the people you can no longer email. Someone who unsubscribed in Mailchimp is not skipped: their address goes onto your suppressed addresses, so a later campaign cannot reach them by accident. Only people who are still subscribed go into a list.

Owners and admins upload files and start imports, because an import writes suppressed addresses and no role can undo those. Every other member can open Imports and read every report.

Upload your files

The Import contacts form, with a Put subscribed contacts in menu reading No list and a Mailchimp CSV files picker, above an Upload and choose columns button
  1. Optional. The list that subscribed people join. Leave it on No list to import everyone without adding anyone to a list.
  2. Pick every file in the export. One upload carries several files.

Mailchimp exports an audience as one file per subscriber status, so one upload takes several files. A file is a CSV, which is a spreadsheet saved as plain text. Two files cannot share a name, because Wakio asks you about each file separately. Rename one and upload again.

Choosing Upload and choose columns imports nothing. It takes you to the next page, and the import starts only when you confirm what the columns mean.

Map the columns

The mapping card for subscribed_members.csv, with Everyone in this file is set to Subscribed, Email Address mapped to Email address, and the other columns, including OPTIN_TIME and CONFIRM_TIME, left on Do not import
  1. Which subscriber status everyone in this file has.
  2. The column that holds the email address.
  3. Consent columns can stay on Do not import. Wakio reads them anyway.

Each file gets a card, headed by its file name, with a menu for the file's status and one menu for every column in the file. A column can become the email address, the subscriber status, one of your contact fields, or nothing at all. Archived contact fields are not offered.

  • Nothing is chosen for you. Every menu starts on Choose a status or Do not import, even when a header is called Email Address.
  • Choose a status for each file. Alternatively, map a column to Subscriber status, and each row's own value wins over the file's status. Wakio refuses to start until every file has one or the other. Check this choice before you start: a later import can make a status stricter, never looser.
  • Map the email column. Wakio does not check this before it starts. A file with no email column rejects every row as "missing email", and the report says so.

Names need care, because the mapping only offers your own contact fields. A first name goes into the contact's name only when you have declared a field called "First name" under Contact fields and mapped the column to it. Nothing imports a last name into the contact's name. A field called "Last name" stores it as an ordinary field value on the contact. Where a row has a first name, it replaces the one already stored. An empty cell never erases a name Wakio holds.

Map a column to a field only when its values fit the field's type. A date has to be written year, month, day, and "Yes" does not fit a true or false field. A value that does not fit rejects that row: no contact is created or updated, and the report lists the row with the reason. An opt-out row that fails this way still takes effect. Wakio adds its address to your suppressed addresses first, so the opt-out arrives even though the row is rejected.

What each Mailchimp status becomes

The What your files held table of an import with 41,402 accepted rows: Subscribed 36,914, Unsubscribed 2,488, Cleaned 612 and Non-subscribed 1,388, each with what Wakio did with it
  1. Imported and added to the list you chose.
  2. Imported and kept as an opt-out.
  3. A bounced address. Nothing is sent to it.
  4. Imported, but never opted in.
Mailchimp statusThe contact becomesSuppressed addressJoins your listWhat the report says
SubscribedActiveNoneYesImported, and added to your list
UnsubscribedUnsubscribedUnsubscribed, stops: Marketing email onlyNoSuppressed for marketing
CleanedUnreachableMailbox does not exist, stops: All emailNoSuppressed for everything
Non-subscribedNever subscribedNoneNoImported, and marked never subscribed

A Cleaned address is also added to the sending service's own list of addresses to refuse, as a second stop behind your suppressed addresses. The report counts those under Also on the sending service's list. If your account has no verified sending domain yet, there is no such list to add to, so Wakio skips that step and says so. Your suppressed addresses still stop every send.

The stricter status wins. If an address is already unsubscribed in Wakio, a file that calls it Subscribed does not bring it back, and it joins no list. If the same address appears in two files, it ends up with the stricter of the two. A contact Wakio already holds as never subscribed, such as someone who started a subscribe form and never confirmed, also stays that way and joins no list. Existing contacts are matched by email and updated, never duplicated.

Mailchimp's Pending status has no equivalent here. If a column you mapped to Subscriber status holds "pending", that row is rejected with "unknown status: pending". The file-level menu offers only the four statuses above.

Importing never starts a flow, even into a list that a flow starts on.

The Your suppressed addresses and How each contact consented sections of an import report: 3,100 added by this import, 612 also on the sending service's list, and a table of Double opt in 27,305, Single opt in 9,609 and Controller assertion 4,488 contacts
  1. Every Unsubscribed and Cleaned address, with how many of them Wakio also added to the sending service's list.
  2. How many contacts consented in each way.

Each accepted row gets a consent record, and its basis depends on what the export carried:

BasisWhen
Double opt inThe row has a confirmation time, in a column named CONFIRM_TIME.
Single opt inThe row has no confirmation time but has a signup time, in a column named OPTIN_TIME.
Controller assertionThe row has neither, so the basis is your word that you hold consent.

Wakio reads those two columns by their exact names, whatever you chose in the mapping, so leaving them on Do not import still records the consent. Renaming them in a spreadsheet loses it, and every row falls to Controller assertion. Mailchimp writes times with no time zone, and Wakio reads them as UTC. When a row has no time, the record is dated from the moment you started the import.

An import never records a confirmed opt in. That one is kept for a click Wakio saw itself. Starting the same files again does not add a second record for the same import, but a new import a year later is a new record.

Read the report

Under Imports, each upload is one row with its Started time, status, and the Accepted, Rejected and Suppressed counts. The status is one of Needs mapping, Running, Completed, or Failed. The counts read 0 until the run finishes. Open a row to see its report.

While an import runs, it continues in the background, so you can leave the page. The page names the file it is working through and shows partial totals, and it hides the breakdown until the run ends, so a half-finished count cannot read as the final one.

A finished report states how many rows were accepted and rejected out of the rows read, then shows the breakdown by status, your suppressed addresses and the consent bases. The suppressed count is every Unsubscribed and Cleaned row Wakio read, including addresses you had already suppressed and including rows rejected for another reason, such as a value that did not fit its field. That is why it can be larger than the number of opt-outs that are new to you.

Rejected rows lists the rows Wakio could not import, with the file, the row number and the reason, such as "missing email", "invalid email", "unknown status: pending", or a field value that did not fit. Every other row in the same file is still imported. A big import can reject thousands of rows, so the page lists only the first 50 and says how many were rejected in all. The row number counts data rows and leaves out the header, so row 212 is line 213 in your spreadsheet.

An import can also fail, and a failed report says everything it had already applied is kept. If a file could not be read as a CSV, nothing past that point was applied. Export the audience from Mailchimp again and start a new import. If the cause was on Wakio's side, the report says so and you can start the same files again. Running the same files again is safe: a contact that is already here is updated rather than duplicated, and the same address gets one consent record per import.

Good to know

  • Imports cannot be deleted. Reports are kept, because they are the record of what an import did to your audience. A wrong upload stays in the list as Needs mapping. Start a new upload instead.
  • A mapping cannot be fixed afterward. Once you press Start import, the choices are final. A new import of the same files fixes fields and first names, because it updates the contacts that are already here. It cannot fix a status chosen too strict: an import only ever moves a contact toward unsubscribed or unreachable, and a later import never removes the opt-outs an earlier one wrote. For an unsubscribed contact, the one way back is the person confirming a subscribe form themselves, as described under Contacts and lists. A contact left never subscribed can also be made active by your developer through the API with subscribed: true, which records your word as their consent, as described under Add a contact. If a file got the wrong status, email [email protected] before you send anything.
  • Members read, admins start. Everyone on the account sees reports, but only owners and admins see the Import contacts button.