The GUID for what record? Activity or Custom Object?
Please explain exactly what you're trying to accomplish.
I'm specifically looking at Opportunities. We use Marketo and Netsuite and currently have Vertify as our middleware. We've had a lot of issues with Vertify and our CTO is trying to have us move away from the technology and sync everything through our SQL database. We have a dev team but they are not familiar with Marketo at all and they asked me to explore what was needed to create and update opportunity records through a REST API call. While digging around for a lot of the API stuff I've been seeing references to the GUID but haven't had much luck with exposing it unless I used a GET API call and used a different filter to pull up the record.
It's overly general, really, to talk about "Opportunities" alone.
Opportunities are one level away from leads in Marketo (as in most CRMs): they have a many-to-many relationship with leads and will not show up at the lead level unless there is at least one row in the Opportunity Role cross-reference (junction) table to bind the Lead table and Opportunity table together. Oppty Roles and Oppties have separate REST API endpoints. When you view an Opportunity via the Marketo UI or via Velocity, you're seeing a synthetic view that comprises both tables, with some fields taken from each table (for example, the Role is in the Opportunity Role table, while the Description is in the Opportunity table).
What I think you're driving at w/r/t the marketoGUID not being "exposed" is that you don't see it in the Marketo UI (nor, sometimes just as important, do you see it in the Velocity scripting context). This is unfortunately true, but what I've done to work around it is append the externalOpportunityId to the name of the Opportunity, so it shows in the UI:
You could do the same with the marketoGUID upon Opportunity creation, but it takes an extra API call that way.
I don't know what you mean by "sync everything through our SQL database" but you're going to be writing your own middleware, i.e. integration tier, to get this done. And that's a fine and often advisable project, but you shouldn't confuse it with not having middleware.
This is super helpful and I appreciate the response. And you correct that we will partly be building our own middleware and partly (at least for the time being) be moving some things to a manual process while we fix some of the issues created by our purchased platform middleware.
I like the idea of using the external opp ID and I think that answers what I was trying to get at after reading the API guide (which was really just what direction I need to steer our dev team in for what they might need that isn;t as simple as sync this field over and how we can match to dedupe).
What I meant by syncing through our SQL database was just that we are no longer directly connected Marketo and Netsuite. Our CTO want us to upload everything into our database (basically acting as our middleware as you mentioned) and have the two systems only speak directly to that database.
Again, really really appreciate your help and being able to read through my confusion to get at what I was actually trying to figure out!