Comments (12)
btw, if anyone reading this wonders, the only solution in Intercom right now to handle an update to lots of users is via the import / export csv feature in the dashboard, which can't be automated
from intercom-node.
Was the bulk API removed from this library? I see it mentioned in here and in some repo commits, but not in the docs any more.
from intercom-node.
Hey,
Rate limit information should be returned in the headers for every request: https://developers.intercom.io/docs/rate-limiting
bulk update users
Use the bulk api! 😄 This lets you update many users (max 50) in a single request, which is handled asynchronously
from intercom-node.
I agree with @tejasmanohar that if the lib is restricted by the same set of rules the api dictates then it's an app concern. I still think it's bad developer experience that we have to do all kind of throttling hacks to make an update to a non-trivial amount of users.
Use the bulk api
the rate is 500 users / min and not requests / min, so bulk doesn't help at all. 10 consecutive bulk calls and I hit that limit
If you take Segment's node library for example, they have some queue logic baked in to throttle requests to their servers, this makes it a nicer developer experience so that you don't have to worry about stuff like that.
Maybe I'll just use Segment's package to send to Intercom :-)
I wonder how they handle the calls from their servers to Intercom's api and how they bypass the limit
from intercom-node.
the rate is 500 users / min and not requests / min, so bulk doesn't help at all. 10 consecutive bulk calls and I hit that limit
That definitely should not be the case, can you reproduce that?
from intercom-node.
@bobjflong looking at some old conversation I had with one of your reps, I see that I am wrong, it's req/min and not users/min.
So you could theoretically update 25K users / min even though I remember that when I tested it I hit the wall much sooner.
Anyway, 50 users / request is very low and in any realistic situation we'll have to build some kind of queue around it on the client.
It's not a big deal though, still think Segment's approach is nicer, but that's the fault of the api and not the client lib
from intercom-node.
It looks like Segment's batching is client side though. Should be possible to do something like this here, even using something like: https://www.npmjs.com/browse/keyword/throttle
from intercom-node.
Batching to Segment's servers is done client side, but I guess they have to do some batching on the server side as well before sending data to Intercom to not hit the limit. I don't think that side of the integration is open source
from intercom-node.
Or maybe it is, coincidentally written in Node
https://github.com/segmentio/integration-intercom
from intercom-node.
As far as I remember the limit was of 100 and now is reduced. I was not aware of this. Is it possible to post API change-log somewhere? The rate limit seems to be changed as well. Old delay I have used is not actual anymore...
from intercom-node.
It seems like the limit is users per second, not requests per second, and the bulk API was removed from the official docs altogether.
from intercom-node.
The bulk update is indeed missing greatly from this package...I'd rather not handle and write rate limiting code...
from intercom-node.
Related Issues (20)
- Unable to pass customAttribute object to client.conversation.update() HOT 1
- Typo in type `RecepientType` (should be RecipientType) HOT 2
- I can not create a contact user. HOT 8
- Try to run boiler plate code in a node script either results in "SyntaxError: Cannot use import statement outside a module" or "Error [ERR_MODULE_NOT_FOUND]" HOT 1
- Unable to update by companyId with `client.companies.update`
- Type issue while using Intercom-Version headers HOT 1
- Small mistake in README - "import { Client } from './dist/index';" HOT 1
- Get Converting circular structure to JSON error when init Client
- How to import types ? HOT 1
- Unexpected behaviour using access token HOT 2
- Creating and Updating a Company - only companyId should be required
- Searching conversations with date fields always returns an empty result
- Do not throw undefined when the response body does not match the intercom API format
- Axios dependency version has critical vulnerability CVE-2023-45857 HOT 2
- createDataAttribute returns a 500
- ERROR | Unexpected error when using the `search` query on the `post` method HOT 1
- Intercom migration guide is missing
- #2
- Unable to build 5.0.0 with TypeScript
- `listAttachedTags` Method has wrong return type
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from intercom-node.