I have a client who uses custom objects to store information about buyers, consumers & associated purchases.

Right now there are two types of leads (defined by the "Purchase Status" field, populated from the external DB): Buyers (those who make a purchase) and Consumers (those who created a Purchase Order).

There are also two first-level custom objects: a Purchase Order (linked to Consumer who needs buyer(s) to buy something for him) and a Purchase (linked to the Buyer, who made a purchase for a specific PO. It contains all info about the purchase, as well as "fulfilment %" for the purchase order) .

What I need to do: I need to send an alert email to every buyer, who contributed to the purchase order when "fulfilment %" reaches 30%/50%/60%/90%, etc.. Right now the way this works is that we have a daily batch campaign sending email to everyone who has a Purchase record with "fulfilment %" = 30/50/90%. For that to work we have to update each purchase record's "fulfilment %" via API every time a new purchase is made for the same PO.

Problem: new purchases are happening daily and there are thousands of them - we have already exhausted our API limit, so we have to limit purchase record updates by date, so we aren't really sending all the notifications we need.

Any ideas on how to solve this? So far I've come up only with an idea to raise the API limit. I was thinking that possibly second-level custom objects could help, but I can't quite tackle this yet.

Are you already updating the records in batches (one call, many records) rather than a separate API call to update each custom object record? You sound like you would've already been on top of that, but it's the only thing that comes to mind besides increasing the API limit.

Yep, already doing that. Thing is, it's not the only thing we are doing via API - all new consumers, buyers, etc. are created in the client platform first and added then to Marketo via API, so basically everything we are doing is going through API.

We are already exploring the possibility of increasing the API limit, thanks, just wondering if there's something else we can do.

If you are capped by API limits I probably wouldn't use COs for this. Rather, I'd use one or more textarea fields with JSON content (arrays of Purchase objects, etc.) and update them via webhook.

Seconding Grant, though, how many updates are you talking about when you say "thousands," and what kind of batch/bulkifying are you doing (or are you prevented from doing this by other tiers of the workflow)?

Also, you might think about the wild(er) concept of having the Purchases be Persons, not COs. In a recent project I had the Eureka! moment of realizing that the COs that were giving us trouble really could be People in their own right, and a lot of problems went away (net, at least).