Contacts not being created with events even though completions are being shown



Lately we've had issues with the http events api. We need to be able to create contacts when a user triggers an event, however we have logs on our server showing that a contact completed an event and the api returned a valid status code, and yet we can't find the contact in the CRM.
We can also match the event completions on hubspot's report tool with our own logs so it doesn't seem like there are no event completions, it's just that contacts aren't being created. We can find some of them, but we are missing others


Hi @Nate, happy to help here. Can you reply with the following:

  1. a link to the event you're looking at in HubSpot.
  2. an email address of a contact that didn't show up in HubSpot, but did in your logs.
  3. the page link and action I can take to recreate this event.



Hi, Thank you for the quick reply.

  1. Not exactly sure what you mean by a link to the event but this is how i see it in hubspot:
  2. (this is just an example we are seeing this issue with other contacts)
  3. It is triggered using hubspot's http api, in order to tigger it you have to first signup here:
    Then go to this page:

Then click on the button that says "Generar Ficha". This will trigger the event call on the back end in no more than 2 minutes, possibly immediately. It will trigger it using hubspot's events http api


Hi @Nate, I was able to successfully trigger the event "Cargo Creado" successfully. My contact was created in your portal here: and I can see the event on my timeline. This appeared to happen after I sent my cellphone number:


Hi, yes i know that contacts are being created.

My issue is that some aren't being created (like the one in the example above) and it seems to be happening randomly...the wierdest thing is that I'm seeing all "Cargo Creado" event completions on hubspot and it matches perfectly with my log count but not all of the contacts in my logs are showing up in the CRM.

This is a big issue for us since we are missing visibility on our conversion funnel because those events should trigger an SQL. But we are missing some.

Also, just as a sidenote, the request params you are highlighting on your screenshot are from the identify method on the javascript api, as i mentioned, the actual event call "Cargo Creado" is triggered with the http api on the backend.


Maybe it helps to mention that we triggered a deletion of some of these contacts from our crm about a month ago and now they are reengaging with our website. Could this be causing the issue?


Hi @Nate, that shouldn't cause an issue. I deleted my contact, then re-completed the event and my contact was recreated. My fault on the screenshot, I must've missed where you said you were using HTTP events instead of JS.

Looking at our backend system, it looks like that contact you gave as an example was deleted on 10/12, but then completed the event on 10/23. I'd have expected that contact to be recreated. I'm going to reach out to my team about this issue and get back to you. I'll let you know if we need more info!


@Nate, can you also send over your HTTP event request URL? I was able to recreate my contact previously, but now am unable to do so. Going to get clarification from my team, but just need the URL you're using for the request


Sure, the URL is:


Can you send the full request URL as per the docs: Do you have any other optional parameters like Contact Email Address, External id, etc? Sorry, I definitely worded that last question a bit strangely


Hi, sorry for the delay. I didn't get notified of your response. Sure, an example of the url we are using is this:{{our hubspot id}}&_n= {{our cargo creado event id number}}&interested_in_plan=Plan+B%C3%A1sico&email={{url encoded user email}}&mobilephone=5555555555&interested_in_curso=UAM&interested_amount=899.00&phone=123456798

As you can se we are adding extra parameters for contact properties with this event.

I should mention that as of yesterday we are adding a previous step to any event call on our backend that calls the createorupdate api enpoint before any http event is called. We did this to mitigate this particular issue.


Hi @Nate, no problem! Thanks for that info. I'm reaching out to our developers now about this behavior.


@Nate are you also making a contacts API call along with the event completion to create contacts? When looking at the source of my contact which I created by completing the event, if I click on "See history" next to my email address or name, I can see that the source is API. If this were being created from HTTP events, we'd expect the source of creation to be ANALYTICS. Are you making concurrent requests? These could be interfering with one another.


Hi Connor, as i mentioned, between the first message and my last message we decided to make sure that contacts were being created before events were triggered on our backend.
So as of Oct 29th, we started using the api endpoint for contact creation to mitigate the issue with events not creating contacts.
We now have a bit of a performance hit since, now, we make sure that every call to the events api is preceded by a call to the creation api.
Now we are not sure if this issue is still present, we would have to roll back this change to make sure...but we had to act because we were missing visibility on hubspot's crm.


Hi @Nate, I missed that, my apologies. thanks for the info.


Hi @Nate, I'll have to apologize where I confirmed that contacts who you previously had deleted and are now re-engaging with your website would be recreated after completing an HTTP event. This is not the case. It is expected behavior that the HTTP API on its own will not create a new contact if the email address matches that of a deleted vid. Since you'd deleted contacts previously (such as, any event they had completed will not recreate them in your portal, but will still log to the activity feed on the event. I was able to recreate this scenario in my own portal. My contact was not recreated upon re-completion of the original HTTP event, nor upon completion of a new HTTP event.

I was getting tripped up because I was able to replicate the behavior once, then wasn't able to and then was able to once more. Now that you've confirmed that you made the switch to the Contact's API on October 29th, I can say confidently that this was the behavior I was experiencing. This can also be confirmed by looking at the history of my contact here:, which is API and not Analytics as we'd expect if my contact was recreated via the event. I also noticed there were thousands of contacts deleted when going here:, and even more of them I can see on the backend. There doesn't appear to be any blip in the HTTP events system. Let me know if I can clarify anything


Ok, understood.
The reason we deleted these contacts is because our database had grown a lot and we needed to cut down on some costs. We've been told since then that we have the option of opting contacts out of email so they wont count against our usage bill. We wanted to confirm if this is true because if this is the case, we would probably restore all of those deleted contacts (we are still in that 90 day window) and just opt them out of email so they won't count against our usage bills.
Is this possible? or true?


Hey @Nate, so this is a common point of confusion about opted out contacts. The source of confusion might be here which we're working on rewording. You can opt contacts out of receiving emails by "importing" an opt out list, but when you do this to begin with, they don't actually get created as contacts in HubSpot. It basically just marks those email addresses as opted out so that if they were ever to be created somehow in HubSpot, they'd be marked as opted out of email. The most important part of the article linked above is the following:

If there are email addresses in your opt-out import that currently exist as HubSpot contacts, they will be automatically unsubscribed, but still exist as contacts and count towards your total. To prevent these contacts from being included in your billable total, you can delete them and then re-import as an opt-out list. They will not exist as contacts in your portal, and only their email addresses will be marked as ineligible.

The reason for this is because opted out contacts can't receive email, but otherwise they're exactly the same as opted in contacts. We still have to pay for the resources to process the contact's analytics/properties/etc.


Ok, so our solution for deleted contacts that trigger events should work to mitigate this issue right? By always being preceded by a call to the create contact api endpoint


Hi @Nate, that's right. If you're making a call to the contacts api to create the contact before that contact completes the event, you would not have any of these deleted contacts who are re-engaging fall through the cracks and also allowing the event to be completed. If you keep this process in place you should be all set.