Biblioteca de queries
Biblioteca de queriesCorrelacionar datos de usuario entre WordPress y Mailchimp

Correlacionar datos de usuario entre WordPress y Mailchimp

Esta consulta combina los datos de usuario del sitio WordPress local con los datos de esos mismos usuarios obtenidos desde Mailchimp, utilizando el correo electrónico del usuario como identificador común entre ambos sistemas.

El resultado serán los datos de usuario email, name y lastname provenientes de WordPress, ampliados con el campo location proveniente de Mailchimp.

query FetchUserDataFromMailchimpList(
  # 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!
) {
  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]
  )
    @remove
  
  mailchimpListMembersJSONObject: _sendJSONObjectItemHTTPRequest(input: {
    url: $__mailchimpAPIEndpoint,
    method: GET,
    options: {
      auth: {
        username: $__mailchimpUsername,
        password: $__mailchimpPassword
      }
    }
  })
    @remove
  mailchimpUserData: _objectProperty(
    object: $__mailchimpListMembersJSONObject,
    by: { key: "members"}
  )
    @underEachArrayItem
      @objectKeepProperties(keys: ["email_address", "location"])
    @export(as: "mailchimpUserData")
}
 
query FetchUserDataFromWordPress {
  users(pagination: { limit: -1 }) {
    id
    email_address: email
    name
    lastName
      @export(
        as: "wordpressUserData",
        type: LIST,
        affectAdditionalFieldsUnderPos: [1, 2, 3]
      )
  }
}
 
query CombineUserDataFromMailchimpAndWordPress
  @depends(on: [
    "FetchUserDataFromMailchimpList",
    "FetchUserDataFromWordPress"
  ])
{
  combinedWordPressAndMailchimpUserData: _arrayInnerJoinJSONObjectProperties(
    source: $mailchimpUserData,
    target: $wordpressUserData,
    index: "email_address"
  )
}

Y define en wp-config.php:

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