This part of the document describes the different ways through which an external system can use MailUp to send email messages with dynamic contents: this way, it is possible to take advantage of the MailUp reputation and sending infrastructure to avoid spam filters and check both send status and the archive of sent messages.
The dynamic fields allow to send single email messages containing some personalized content, through the same process MailUp uses for confirmation request emails and subscription confirmation emails. These messages - also called transactional emails - have a fixed structure with some personalized fields: for example, they can be used to send the user a password, a notice, an order confirmation, and so on.
MailUp can manage the whole process automatically, so:
- messages are sent very quickly, thanks to an oversized infrastructure that guarantees immediate sending (except in case of grey listing on destination servers). There are no bandwidth restrictions here and a dedicated channel is used for sending (no queue-related delay). Anyway, this functionality should not be overused, not to lose these benefits
- automatic processes can be activated following actions that users might have performed.
MailUp can send transactional emails in two ways, as described below:.
- MailUp sends a confirmation message to subscribers through an automatic procedure. Subscription can take place in two ways:
The content of the subscription confirmation message can be edited, so to make it correspond to the template of the message you want to send (there is only one confirmation message for each list, but countless lists are available). The confirmation message can be personalized with the recipient's personal data by using dynamic fields (up to 40 available when purchasing the Marketing+ package).
These emails can also contain a link triggering an action (opening of a messages page and automatic sending of another email), through the use of SUB link. A specific list can be created for the purpose, and each list can have a different sender address.
- A web service allows the immediate sending of a single message. This procedure is much more flexible, but it is paramount to follow the instructions provided in the section describing this function.
The SendSingleNewsletter Method allows to send an email message with the indication of subject, recipients and contents.
When using SendSingleNewsletter(), the best practice is to use predefined messages with dynamic sections, and not to create a brand new newsletter for each call. In this case MailUp would keep on using space to store the new contents, thus making performance worse
Email messages sent to groups of users
This section describes the different ways through which MailUp can be used to send email messages to groups and lists of users without accessing the administration console. The methods described above suit to small automations, but if the goal is to send huge amounts of newsletters or DEMs the best practice to be followed is described below.
Standard Web Services
Some possible scenarios are presented here - with the indication of the web services to be used - as examples of frequent cases. This is not an exhaustive overview of all the possibilities anyway.
In the following examples the aspects regarding the authentication to web services are not approached. WS_MailUpImport authentication methods are different from the other web services. Please refer to the related documentation for details.
You may want to send a message to a group of users and both the message and the recipients list are already available in the MailUp console.
- If the message has to be sent to all the recipients in a list the suggested method is SendNewsletter Method. Parameters "send_to = ALL" , list ID, message ID and time and date of sending must be specified. Message and list IDs can be found at the page Settings > Table codes in the MailUp console, or using GetLists() and GetNewsletters() methods.
- If the recipients are just some groups in a list, when calling the SendNewsletter() method the group IDs must be specified as well.
- If the users share data that can be extracted using one of the MailUp filters (personal data, activity and geolocation filters, available in the Marketing+ package) when calling the SendNewsletter() method the filter to be applied must be indicated as well. Filters can be used in addition or as an alternative to groups. The great advantage of using them lies in the fact that all the users matching a certain condition are automatically included in the filter results, whereas a user must be inserted into a group for group membership.
Do not use SendSingleNewsletter() in place of SendNewsletter(): the first one has to be used only for transactional emails, as described above
Similar to Example 1, but in this case a group of recipients has to be imported as well. Some of these recipients might be already subscribed in MailUp due to a previous signup to a newsletter, some others might be new subscribers.
- Through WS_MailUpImport methods a new temporary group is created (CreateGroup(groupName)) and a group of recipients is imported to it (StartImportProcess(groupID, recipients,…)). This operation may last several minutes, depending on how huge this group is, and it can be monitored using GetProcessDetails(). Once the import is finished, SendNewsletter(groupID) method can be used to perform the sending. At the end of the process the group which was created for the purpose must be deleted using DeleteGroup(). This procedure applies to SMS sending as well: obviously the method to be used is SendSMS Method.
- The procedure described here above is less effective when there are huge amounts of data to be imported, so it may be useful to use an alternative procedure that provides for a "bulk" import from a file following an input via web service. SendMessageNL(fileName, listId, messageId, timeDateSending,…) method allows to schedule a sending for the desired time and date, then asynchronously executes the following operations:
- Creation of a temporary group
- Import to this group of the recipients indicated in the file
- Sending of the message at the scheduled time and date
- Deletion of the temporary group
It may be necessary to import to MailUp a message created using an external system. CreateNewsletters() method allows the creation of a new message where the parameter to be passed is the body of the message (html, text or URL that points to the html file).
It is also possible to use the SendNewsletterFast() method, which conveys to a single call the information that can be drawn from the calls to CreateNewsletters() e SendNewsletter() methods.
Methods creating a new message instead of using an existing one should not be overused. A large number of messages created by the web services (e.g. dozens of messages a day) might cause a system overload and worsen performances on the long term
Most customers need to track campaign results. Considering that, when the same message is sent repeatedly (regardless of the number of recipients), the export of statistics via batch cannot associate the clicks to the corresponding mailing, making a copy of the message can be very useful so to have the detail of each sending. CloneMessage() method allows to clone a message: once the copy has been created, the sending can be performed as described above.
When using web services it is not possible to manage the import of external campaign codes: this operation requires an import via batch instead.
Batch FTP ZIP
Batch FTP ZIP mode is a special integration allowing to import via batch a zip folder containing several files with the recipients list, the html message to be sent and the sending details (date, time and so on).
This procedure allows to use MailUp to send messages without accessing the administration console.
Batch FTP ZIP integration is available at an extra charge; for technical details see FTP-based Integrations
Web Service for massive mailings
The MailUp console can be configured to perform massive mailings with highly personalized content, through the use of web services. A special web service method is called, while parameters such as the recipient's email address and the body of the message are passed; then the MailUp console adds these calls to the queue and a scheduled batch process is in charge of picking and sending blocks of them in order to maximize delivery performances according to purchased bandwidth. This procedure is suitable for high-volume mailings that require sending all the emails within a specified time frame.
- Higher performance than traditional web services (speed depends on the bandwidth anyway);
- Ability to manage millions of requests per day, and to respect a deadline of delivery, as long as the bandwidth of the console is consistent with the size of the messages, the desired delivery time and the mailing volumes;
- Avoids issues that afflict traditional web services, when every request involves the creation of a new message;
- Sends completely different messages for each recipient
- Allows to specify a text version of the message, different from the html version.
- Designed for cases in which there is no or little need to access the MailUp console, so some features regarding sending or statistics may not be available;
- The console for massive mailings is a spin-off of MailUp 7.3 (released in late 2010), but does not follow the same roadmap of software releases, so it may not support the latest features added to the new releases of the console;
- Sent messages are stored as belonging to the same newsletter. As a consequence, the statistics include just message-level reports filtered by date;
- Not suitable for single messages sent in real time (appropriate configurations can reduce latency to just one minute, although our experience shows that ideal configurations have a latency of 15-30 minutes)
- In order to guarantee the highest level of performance, a periodic removal of unnecessary data is required. For this reason, one MailUp console is not enough for an intensive 24x7 usage: in this case, it is recommended to purchase two or more MailUp consoles and configure the web service calls distribution in such a way that every day each console has a peak of intensive usage and an idle period. The web service interface is always the same even with more than one console.