Recommended Software
Settings, tools and software we recommend to make use of FTPZIP the proper way include...
- A valid MailUp account
- A valid MailUp FTP account: please ask your sales representative to create one for you. As mentioned above, additional fees may apply.
- An FTP client such as FileZilla is highly recommended even if not strictly necessary.
- A text editor such as Notepad++ is recommended, even though Windows notepad is fine either way.
- A Zip software such as WinZip or WinRAR. (Windows users). If you’re using MAC OSX you won’t need any additional software to pack your files into an archive.
- We recommend acquaintance and familiarity with XML, HTML and CSV formats.
Why using a ZIP archive?
What has a Zip file to do with the dispatch or with the creation of an email campaign? The Zip archive is nothing more than a container that FTPZIP will unpack and process to create a campaign and/or to schedule it for sending. Depending on the actual scope of the upload, the submitted ZIP archive may enclose different sets of files in there.
Normally FTPZIP will expect a ZIP archive made of :
title | Strict file naming conventions |
---|
Settings.xml
Anchor | ||||
---|---|---|---|---|
|
It is the only mandatory content of the ZIP Archive.
Settings.xml will contain in XML format:
- the target list the process will run against
- the campaign subject
- sender name and email
- many other settings FTPZIP will read before running each process
XML structure is divided in three main nodes:
- Header: General data regarding FTPZIP operations
- Content: Data about the Mailing that will be executed
- AdvancedSettings: Data about message creation, Kind of Mailing, CSV File features.
Below a working example. In most cases you can copy this xml content and use it for your own purposes, of course changing the variables that need to be changed to match you MailUp account and campaign needs.
Note |
---|
All xml keys are required even though some values can be omitted. ( such as SenderName or ScheduleDateTime ). |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>full</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <ReplyToEmail>jane@doe.com</ReplyToEmail> <EmailSubject>Campaign0009</EmailSubject> <ScheduleDateTime>2014-11-04T11:20:00.000</ScheduleDateTime> <ScheduleTimeZone>6</ScheduleTimeZone> <Notes>Notes for campaign 00009</Notes> </Content> <AdvancedSettings> <Separator>;</Separator> <Attachments>false</Attachments> <DynamicFields>true</DynamicFields> <EmbeddedImages>false</EmbeddedImages> <LinkTracking>true</LinkTracking> <HttpLinkTracking>true</HttpLinkTracking> <HttpsLinkTracking>true</HttpsLinkTracking> <MailToTracking>false</MailToTracking> <FtpTracking>true</FtpTracking> <NewsTracking>true</NewsTracking> <QueryStringAdditionalParams></QueryStringAdditionalParams> <ContentOverride> <MessageId>1136</MessageId> <CloneMessage>true</CloneMessage> </ContentOverride> <SendType>transactional</SendType> <Transactional> <Username>sxxxxxxx</Username> <Password>xxxxxxxx</Password> <AggregationCode>xxxxxxx</AggregationCode> <KeepDuplicates>false</KeepDuplicates> </Transactional> </AdvancedSettings> </FtpZip> |
Input fields detail
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node <Header>
Node <Content>
Node AdvancedSettings
|
Time Zones
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Use Cases
Working example of settings.xml for the most common use cases.
Send an already defined email message (massive)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>send</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <EmailSubject>Campaign0009</EmailSubject> </Content> <AdvancedSettings> <Separator>;</Separator> <ContentOverride> <MessageId>1136</MessageId> </ContentOverride> </AdvancedSettings> </FtpZip> |
Send an already defined email message (transactional)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>send</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <EmailSubject>Campaign0009</EmailSubject> </Content> <AdvancedSettings> <Separator>;</Separator> <ContentOverride> <MessageId>1136</MessageId> </ContentOverride> <SendType>transactional</SendType> <Transactional> <Username>sxxxxxxx</Username> <Password>xxxxxxxx</Password> </Transactional> </AdvancedSettings> </FtpZip> |
Send a copy of an already defined email message (massive)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>send</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <EmailSubject>Campaign0009</EmailSubject> </Content> <AdvancedSettings> <Separator>;</Separator> <ContentOverride> <MessageId>1136</MessageId> <CloneMessage>true</CloneMessage> </ContentOverride> </AdvancedSettings> </FtpZip> |
Send a copy of an already defined email message (transactional)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>send</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> </Content> <AdvancedSettings> <Separator>;</Separator> <ContentOverride> <MessageId>1136</MessageId> <CloneMessage>true</CloneMessage> </ContentOverride> <Transactional> <Username>sxxxxxxx</Username> <Password>xxxxxxxx</Password> <AggregationCode>Campaign John Doe</AggregationCode> </Transactional> </AdvancedSettings> </FtpZip> |
Create and send an email message (massive)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>full</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <EmailSubject>Campaign0009</EmailSubject> <ScheduleDateTime>2014-11-04T11:20:00.000</ScheduleDateTime> <ScheduleTimeZone>6</ScheduleTimeZone> <Notes>Notes for campaign 00009</Notes> </Content> <AdvancedSettings> <Separator>;</Separator> <Attachments>false</Attachments> <DynamicFields>true</DynamicFields> <EmbeddedImages>false</EmbeddedImages> <LinkTracking>true</LinkTracking> <HttpLinkTracking>true</HttpLinkTracking> <HttpsLinkTracking>true</HttpsLinkTracking> <MailToTracking>false</MailToTracking> <FtpTracking>true</FtpTracking> <NewsTracking>true</NewsTracking> <QueryStringAdditionalParams></QueryStringAdditionalParams> </AdvancedSettings> </FtpZip> |
Create and send an email message (transactional)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>full</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <SenderName>John Doe</SenderName> <SenderEmail>john@doe.com</SenderEmail> <EmailSubject>Campaign0009</EmailSubject> <Notes>Notes for campaign 00009</Notes> </Content> <AdvancedSettings> <Separator>;</Separator> <Attachments>false</Attachments> <DynamicFields>true</DynamicFields> <EmbeddedImages>false</EmbeddedImages> <LinkTracking>true</LinkTracking> <HttpLinkTracking>true</HttpLinkTracking> <HttpsLinkTracking>true</HttpsLinkTracking> <MailToTracking>false</MailToTracking> <FtpTracking>true</FtpTracking> <NewsTracking>true</NewsTracking> <QueryStringAdditionalParams></QueryStringAdditionalParams> <SendType>transactional</SendType> <Transactional> <Username>sxxxxxxx</Username> <Password>xxxxxxxx</Password> <KeepDuplicates>false</KeepDuplicates> </Transactional> </AdvancedSettings> </FtpZip> |
Create an email message
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <FtpZip> <Header> <ActionType>save</ActionType> <CampaignCode>Campaign0009</CampaignCode> <FormatVersion>0.1</FormatVersion> <NotifyEmail>peter@example.com</NotifyEmail> </Header> <Content> <ListId>1</ListId> <ListGUID>08c6348c-1e6b-4ae7-b44c-156fc4a7f012</ListGUID> <EmailSubject>Campaign0009</EmailSubject> <Notes>Notes for campaign 00009</Notes> </Content> <AdvancedSettings> <Separator>;</Separator> <Attachments>false</Attachments> <DynamicFields>true</DynamicFields> <EmbeddedImages>false</EmbeddedImages> <LinkTracking>true</LinkTracking> <HttpLinkTracking>true</HttpLinkTracking> <HttpsLinkTracking>true</HttpsLinkTracking> <MailToTracking>false</MailToTracking> <FtpTracking>true</FtpTracking> <NewsTracking>true</NewsTracking> <QueryStringAdditionalParams></QueryStringAdditionalParams> </AdvancedSettings> </FtpZip> |
Markup.htm
Markup.xml is the file that FTPZIP will use to generate the email message that will be sent. Note that FTPZIP will run no validation on the actual HTML markup. Making sure that the message was correctly coded and will render as expected in different email clients is up to the author.
The following is a working example of a Markup.htm file content, with HTML code that uses two dynamic fields to include the recipient's name and last name (dynamic fields are replaced with the corresponding values at the time the message is sent by MailUp).
Note that in this example the code contains a remotely hosted image, so no image would be included in the ZIP file.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<html> <body> <br /> <img src="https://upload.wikimedia.org/wikipedia/it/b/bc/Wiki.png" /><br /><br /> <p style="font-family:arial;">Hello, I'm [firstname] [lastname]</p> </body> </html> |
Although this sample message only contains a remotely hosted image, FTPZIP supports "locally defined" images. To take advantage of this feature, include the images inside the zip and let FTPZIP to replace the image path accordingly. In this case markup would look like the following:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<html> <body> <br /> <img src="Wiki.png" /><br /><br /> <p style="font-family:arial;">Hello, I'm [firstname] [lastname]</p> </body> </html> |
Using images in the ZIP file does not require any property or settings enabled. Whatever image you enclose into the zip, FTPZIP will copy it and will attempt to reference it in the HTML markup.
- Path replacement is based on file name. So if you enclose Wiki.png, markup MUST display <img src="Wiki.png" />
- The allowed image formats are : JPG, GIF, PNG.
CORRECT
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<img src="Wiki.png" /> |
INCORRECT
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<img src="http://myurl.com/Wiki.png" /> |
Note |
---|
If you're enclosing an image named the same as one previously uploaded to your Mailup Admin Account, it will be overwritten. |
Recipients.csv
Recipients.csv is the file that will contain the recipients for the campaign when ActionType == full or send
- This file must comply with the formatting policies mentioned at the page http://help.mailup.com/display/mailupapi/CSV+File+Format
- You can add up as many dynamic fields as your account allows.
- You can use any kind of separator, but you must define it in the proper Settings.xml property (“Separator”).
- Make sure Recipients.csv was saved with UTF-8 encoding to avoid loss of special characters in some recipient names or content
Path FTPZIP listens to
Upload the ZIP file in the FTP subfolder “/import_zip” that can be accessed from your FTP root path :
Zip Samples
Note |
---|
When setting up your ZIP archive, please make always sure your archive is not password protected or FTPZIP won't be able to process it and will certainly throw an error. |
Use Cases
Create an email message
As it can be seen, this ZIP archive contains the mandatory files Settings.xml and Markup.htm, one image and the attachment folder. Recipients.csv is not necessary under this scenario as no recipients’ import job will actually take place.
Complete sample Archive for this case can be downloaded HERE
Create and send an email message
ZIP file this time contains Recipients.csv as well, as the full process will require a recipients’ list to import and to eventually send the newsletter to.
Complete sample Archive for this case can be downloaded HERE
Send an already defined email message
The Zip file contains Recipients.csv to be imported and Settings.xml displaying ongoing campaign settings.
This case covers the scenario where there's no need to create new message and it will be used th value set in <MessageId> within Setting.xml
Notification alert messages
FTPZIP may run several minutes after the time the ZIP file was uploaded. The system will provide updates on the status of the various processes. Each process will throw at least one notification alert message, normally sent to the admin account at the very end of the process either if it completes successfully or not.
Error Messages
Expand | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||
|
Success Messages
Expand | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
Others
FTP ZIP throws and handles several offline processes.
It means it can’t be waiting for all of them to complete and even if it all seemed to run fine, some error may occur in further steps of the process FTP has no visibility on.
Therefore, it may happen that you are given the success message “CONTENT SUCCESSFULLY DELIVERED TO SERVER”, because FTP actually did its job correctly, and at a later stage receiving a secondary notification such as :
Alert code: Warn001 |
Usually, this kind of error is thrown for formatting problem in the Recipients csv file. Else, wrong field mapping or naming, or when it is attempted to schedule two campaigns at the same time (or nearly the same).
Please take a minute to read more at the URL : http://help.mailup.com/display/mailupapi/SendMessageNL+alerts
Multiple campaigns at once
FtpZip will look for any ZIP archive file in the defined FTP folder.
This means you can upload two or more campaigns at once.
If the first campaign processed should fail, FTPZIP will exit with errors and will step back into the process one hour later to complete the unprocessed sessions.
Execution of campaign that require Massive Mailing can fail do to work process limit of MailUp Import and Massive Mailing management.
We recommend for these reasons to upload multiple campaigns only once you are familiar with this tool and its settings and, in case there is the necessity to send more ZIP archive at the same time, evaluate to use the transactional Mailing.
We recomend to use Massive mailing when it is necessary to send one email message at a time to a big amount of subscribers.
Also, better not to play with multiple campaigns when you’re too close to deadlines or when they have to start too close each other in time.
Faqs
Expand | ||
---|---|---|
| ||
How do I know if a message was successfully created?Every process, regardless of the result, will trigger an alert notification message to the admin account. This message, beside describing the actual result, usually returns the Message Id (for both ActionTypes==”full” or ActionType==”newsletter”) and the Send Id only for ActionType == “full”). No Message or Send Id is returned in case of errors. How do I know if my Settings.xml is properly formatted?There’s plenty of online xml validators over the web: please try to validate your Settings.xml against one of the following :
For the advanced XSD validation you’ll need the XML schema definition linked below : What is the attachment size limit?Although there’s no limitation with regard to the amount of files you can attach to a certain campaign, you must ensure that the aggregate size is below 3MB. Otherwise the file won’t be processed and you’ll be returned an Invalid Attachment Notification message. How many images can I include in the ZIP file?There is no limitation. I submitted my campaign but I'm receiving no result or notification, why?Please make sure the email address you are monitoring is registered as your MailUp admin account. How do I know if my file was already processed?FTPZIP engine usually runs in less then a minute and unless it stumbles into an internal system exception, it will move your ZIP to an internal location for later processing. One suggestion would be to connect to your MailUp FTP host and check if the submitted ZIP file is still on the FTP folder where you left it last time. If it’s there, it means FTP did not yet process it. Eventually, you will receive a notification message after a ZIP file has been processed (NotifyEmail tag has to be specified in Settings.xml). Can I upload multiple ZIP files to my FTP location?Yes, FTPZIP was programmed to handle multiple files at once. They will be processed in sequence until there’s no file left in the FTP location FTPZIP currently checks. |