Transform customer data with plain javascript

Hull Processor is a real-time editing environment for your customer data in Hull.

Hull Processor

See and edit computed data in real-time

Preview your results in the output and console, then save to set your Processor to run constantly.

See everything in one place

See the full payload and changes within a Hull Profile, your code to transform data, and the outputted data and console in one view.

View Hull Processor documentation

See Hull Processor libraries, methods, and best practices in our documentation.

Compute new traits and events in Hull Processor

Traits are user and account level attributes like names, job titles and email addresses.

hull.traits({'Product Hunt profile': twitter_handle});

Events are actions taken by or taken on a user or account, like a pageview, clicking something, and submitting a form.

hull.track( "User Invited" , { username: <value>, email: <value> })

Write computed data back into Hull Profiles

hull-processor-traits-profile

Processor writes your computed traits and events back into Profiles in real-time, then syncs to all your tools automatically. Computed traits and events can be used like any other data in Hull.

Learn more about Hull Profiles

Transform attributes into events

Use Hull Processor to transform attribute updates into events in real-time, then write new events into Hull Profiles.

// Track an event when a user's monthly recurring revenue changes
if(_.get(changes, 'user.mrr')){
  hull.track("MRR Changed", {
    previous: changes.user.mrr[0],
    new: changes.user.mrr[1],
  });
}

Transform events into attributes

Use Hull Processor to transform streams of events into attributes that update in real-time, then write new attributes into Hull Profiles.

// Write a new trait after a user signs up
events.map(e => {
  if (e.event === "Signup Complete"){
    hull.traits({
      signup_date: e.properties.updated_at
    });
  }
});

Cleanse your customer data

Use Hull Processor as a centralized data cleansing tool. Transform any messy, junk data and submissions into clean, usable, useful formats to use in all your tools. Hull Processor works without limitations or assumptions - write the logic you need.

// Cleanse the names of users
const haveHypen = /[\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]-[\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]/i.test(user.name);
const dontHaveSpace = !/\s/.test(user.name);
const missingFirstOrLastName = !user.first_name || !user.last_name;
if (haveHypen && dontHaveSpace && missingFirstOrLastName) {
  const splitted = user.name.split("-");
  const firstName = splitted.slice(0, 1).pop();
  const lastName = splitted.slice(1).join("-");

  if (firstName && lastName) {
    traits({
      first_name: firstName,
      last_name: lastName
    });
          return;
  }
}

if (user.email) {
        if (!user.first_name) {
        traits({first_name: user.name});
        }
        if (!user.last_name) {
                traits({last_name: "Unset"});
        }
}

Call any external API from Hull Processor

Avoid the constraints of integrations and workflow tools. GET and PUSH data from any external service, and sync with Hull Profiles through the Hull Processor.

// Send an SMS message to new users, and track if sending was successful
if (_.get(changes, 'user.is_paid')){
  return new Promise((resolve, reject) => {
    request({
      url: 'username:password@https://api.twilio.com/2010-04-01/Accounts/ACXXX/Messages.json',
      method: 'POST',
      form: {
        to: user.phone,
        from: 'Your_friends_at_Hull',
        body: "Thank you for becoming a customer!"
      }
    }, (err, res) => {
      if (err) {
        hull.track('Welcome SMS failed to send');
        return reject(err);
      }
      hull.track('Welcome SMS sent successfully');
      return resolve(resp);
    });
  });
})

Scalable, secure platform for your customer data

Hull minimizes the setup and configuration for managing and integrating your customer data. Write and execute plain JavaScript in Hull Processor, and see the output in your end tools in moments. Hull handles scalability and security, and logs all updates and changes to customer data.

Learn about Hull for Developers
Customer success

Work with Hull’s solution engineers

Use our documentation and our solution engineers to design, build, and solve your the customer data integration pains.

Every Hull customer see’s white glove onboarding - we make sure your first use case is setup end-to-end.

Our solutions team will work with you to setup your data up correctly, including working on the Processor when it’s needed. This is included in your onboarding fee.

Learn more about Hull's customer data platform

Break & sync your customer data silos with Hull

Busy teams from Segment, Drift, Mention, and more discovered how Hull worked for them with a personalized demo. Schedule yours today.

Request a demoorSubscribe for updates