Best place to start for sending data from custom forms into Keap?

After reading though the list of items below I have some simple questions:

Because I want to simply send some data from a custom landing page with a custom form using PHP to collect UTM vars and custom fields from paid SEM campaigns…

Is this a TRUE statement:
A) I should use the infusionsoft/infusionsoft-php SDK to make an XML-RPC call to the API via HTTP POST method to the V1 url using access_token = Legacy API Key here: /crm/xmlrpc/v1?access_token=123abc - because this will make my life easy and it will be around for a long time

Is this a TRUE statement:
B)- I should use use a Service Account Key and V2 of the API because its better and the Legacy stuff is going away one day (which is why its called legacy)

Is this a TRUE statement:
C) Both are true because either could be used, but option A is the best choice for PHP and the low volume usage case we are expecting

I have read through the following:

The simplest and most future-proofed method would be B, using a Service Account Key against our Rest V2 API.

Once we submit data from our custom forms the UTM vars are being rejected.

the process looks like this:
We use the APi key to send data from a custom form into:
A: email
B: our local database
C: Keap of course

We use PUT via createOrUpdateContactUsingPUT

Then we catch the contactId for the use and run this

However… insertUTMsUsingPOST
Always fails to update the UTM vars.

The output “says” it works.
the code returned is 200, along with all of the following:
[utmSource] => test01source
[utmMedium] => test01medium
[utmTerm] => test01term
[utmCampaign] => test01campaign
[utmContent] => test01content

However… That data never gets inserted into the user record.

We use the following call:{contactId}/utm
We have tried using all of the following for keapSourceId
115 (our default form ID)

How do we get the UTM vars into createOrUpdateContactUsingPUT or insertUTMsUsingPOST?

I just tried this using Postman and I received a 201 created response when I used the form’s XID value.