Libreria di queries
Libreria di queriesRegistrare un iscritto alla newsletter da InstaWP a Mailchimp

Registrare un iscritto alla newsletter da InstaWP a Mailchimp

InstaWP consente ai visitatori di avviare un sito sandbox per testare un plugin, permettendo loro di iscriversi alla newsletter:

Avvio di un sito di test in InstaWP per testare Gato GraphQL
Avvio di un sito di test in InstaWP per testare Gato GraphQL

Possiamo acquisire queste email fornendo un webhook a InstaWP, nella scheda "Advanced Options" del template:

Opzioni avanzate per i template InstaWP
Opzioni avanzate per i template InstaWP

Il webhook sarà una persisted query con la query seguente. Questa query acquisisce l'email dei visitatori e iscrive tale email a una lista Mailchimp.

query HasSubscribedToNewsletter {
  hasSubscriberOptIn: _httpRequestHasParam(name: "marketing_optin")
  subscriberOptIn: _httpRequestStringParam(name: "marketing_optin")
  isNotSubscriberOptInNAValue: _notEquals(value1: $__subscriberOptIn, value2: "NA")
  subscribedToNewsletter: _and(values: [$__hasSubscriberOptIn, $__isNotSubscriberOptInNAValue])
    @export(as: "subscribedToNewsletter")
}
 
query RegisterNewsletterSubscribeFromInstaWPToMailchimpList(
  # mailchimpDataCenterCode: Code for the data center of your account on Mailchimp (See: https://mailchimp.com/developer/marketing/docs/fundamentals/#api-structure)
  $mailchimpDataCenterCode: String!
  # Audience ID for the list on Mailchimp to which to subscribe the email
  $mailchimpAudienceID: String!
)
   @depends(on: "HasSubscribedToNewsletter")
   @include(if: $subscribedToNewsletter)
{
  subscriberEmail: _httpRequestStringParam(name: "email")
  
  mailchimpUsername: _env(name: "MAILCHIMP_API_CREDENTIALS_USERNAME")
    @remove
  mailchimpPassword: _env(name: "MAILCHIMP_API_CREDENTIALS_PASSWORD")
    @remove
  
  mailchimpAPIEndpoint: _sprintf(
    string: "https://%s.api.mailchimp.com/3.0/lists/%s/members",
    values: [$mailchimpDataCenterCode, $mailchimpAudienceID]
  )
  
  mailchimpListMembersJSONObject: _sendJSONObjectItemHTTPRequest(input: {
    url: $__mailchimpAPIEndpoint,
    method: POST,
    options: {
      auth: {
        username: $__mailchimpUsername,
        password: $__mailchimpPassword
      },
      json: {
        email_address: $__subscriberEmail,
        status: "subscribed"
      }
    }
  })
}

E definire in wp-config.php:

define( 'MAILCHIMP_API_CREDENTIALS_USERNAME', '{ username }' );
define( 'MAILCHIMP_API_CREDENTIALS_PASSWORD', '{ password }' );

Utilizzando questo webhook, quando si crea un nuovo sito di test su InstaWP e l'utente si iscrive alla newsletter, l'email del visitatore viene aggiunta automaticamente alla lista Mailchimp:

Email aggiunta automaticamente alla lista Mailchimp
Email aggiunta automaticamente alla lista Mailchimp