Configuration

You need to add the list in MailChimp's backend first.

config.yml

For each list you want to sync you must define a configuration in your config.yml:

welp_mailchimp:
    api_key: YOURMAILCHIMPAPIKEY
    list_provider: 'welp_mailchimp.list_provider'
    lists:
        listId1:
            # provider used in full synchronization
            subscriber_provider: 'yourapp.provider1'
            # webhook secret to secure webhook between MailChimp & your app
            webhook_secret: 'thisIsASecret'
            # The webhook url to be registered to the MailChimp list
            webhook_url: 'https://myapp.com/mailchimp/webhook/endpoint'
            # optional merge tags you want to synchronize
            merge_fields:
                -
                    tag: FNAME
                    name: First Name
                    type: text
                    public: true
                -
                    tag: LNAME
                    name: Last Name
                    type: text
                    public: true
                -
                    tag: FIRSTTAG
                    name: My first tag
                    type: text
                    options:
                        size: 5
                        ...
                -
                    tag: SECONDTAG
                    name: My second tag
                    type: text
                    public: true
                    ...

        listId2:
            subscriber_provider: 'yourapp.provider2'
            ...

Where listIdX is the list id of your MailChimp lists, and yourapp.providerX is the key of your provider's service that will provide the subscribers that need to be synchronized in MailChimp. See the documentation on create your own Subscriber provider.

Defining lists and providers is only necessary if you use full synchronization with the command.

Defining webhook_* is only necessary if you want to use webhook automation.

Merge fields configuration

You can find all parameters in the MailChimp documentation.

Example:

    merge_fields:
        -
            tag: FIRSTTAG
            name: My first tag
            type: text
            options:
                size: 5
                ...
        -
            tag: SECONDTAG
            name: My second tag
            type: text
            public: true
            ...
        -
            tag: FULLTEST
            name: Full Test
            type: text
            required: true
            default_value: test
            public: false
            display_order: 1
            options:
                default_country: 1546
                phone_format: International
                date_format: dd/mm/yyyy
                choices:
                    ...
                size: 50
            help_text: this is a full test

Note: MailChimp provides two default merge fields (FNAME & LNAME). You can use this config to handle them:

    ...
    merge_fields:
        -
            tag: FNAME
            name: First Name
            type: text
            public: true
        -
            tag: LNAME
            name: Last Name
            type: text
            public: true