Biblioteca de queries
Biblioteca de queriesRegistrar un suscriptor de newsletter desde InstaWP a Mailchimp

Registrar un suscriptor de newsletter desde InstaWP a Mailchimp

InstaWP permite a los visitantes lanzar un sitio sandbox para probar un plugin, a la vez que les permite suscribirse a la newsletter:

Lanzando un sitio de prueba en InstaWP para probar Gato GraphQL
Lanzando un sitio de prueba en InstaWP para probar Gato GraphQL

Podemos capturar estos emails proporcionando un webhook a InstaWP, bajo la pestaña "Advanced Options" de la plantilla:

Opciones avanzadas para las plantillas de InstaWP
Opciones avanzadas para las plantillas de InstaWP

El webhook será una persisted query con la consulta de abajo. Esta consulta captura el email de los visitantes y suscribe ese email a una lista de 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"
      }
    }
  })
}

Y define en wp-config.php:

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

Usando este webhook, al crear un nuevo sitio de prueba en InstaWP, y cuando el usuario se suscribe a la newsletter, el email del visitante se añade automáticamente a la lista de Mailchimp:

Email añadido automáticamente a la lista de Mailchimp
Email añadido automáticamente a la lista de Mailchimp