def event(me, email, ip, event, additional={}, timeout=0, backfill=False,
    url='', testmode=False):
    """
        When something interesting happens on your site, tell Deduce.

        Parameters
        ----------
        email : str
          The user's email address.
          It will be processed and hashed, not used directly.
        ip : str
          The user's IP address (v4 or v6)
        event : str
          The evnt type
          Consult with Deduce support to determine the event types.
        additional : dict
          Event data.
          Consult with Deduce support to determine data to send.
          if you pass in 'email_prev' or 'cc' fields, they will be automatically
          processed and hashed, not send directly.

        Return
        ------
        on success : Nothing
        on fail    : an error string

        """
    if not me.__email_valid(email):
        return 'invalid email'
    d = additional.copy()
    d['email'] = email
    d['ip'] = ip
    d['event'] = event
    return me.events([d], timeout, backfill, url, testmode)
