On facebook's documentation, in "What's New" they have a link titled "Copy and Reuse Ads with Ads Copy API." which leads to this.
Here, they have 3 links, all of them are currently broken.
My question is, how can I copy (and change) an ad, and more specifically, the ad's creative, which is immutable (therefore the need to copy instead of update)?
Update
At the time, we did get some information from our contact at Facebook. However, it meant this wasn't a good approach for us.
Also, there is now new documentation on copying ads, yet still it does not help us specifically, since it does not allow updating ad-creatives.
We've since abandoned this effort, and in fact, solve the problem by having Marketing personnel export the ads, update the field we needed by a script in an Excel file, then uploading back to Facebook.
The Ad Copy feature https://developers.facebook.com/docs/marketing-api/buying-api/ad-units#ad-copies includes 3 kinds of copies, on campaign, ad set, or ad level. There is not an ad creative copy function.
And there probably should not. Ad creatives are immutable, as you know. So why you want to copy another immutable one, instead of using the existing one?
I assume your questions is about how to get the specs of an existing ad creative, modify the specs somehow, and use the new spec to create a new ad creative.
Then, how to get the specs of an existing ad creative: use "effective_object_story_id", which will always give you an id no matter the ad creative was created using an existing post (thus an id was provided) or from scratch (thus an object_story_spec was provided). Once you get that id, in the format of _, you can just query that id directly, using /v2.9/. Then you can get all the specs. Modify it, and create a new ad creative using those specs.
Yes, this is more work than just copy an ad creative. But I believe you are not actually asking for a copy.
Good luck.
Related
I'd like students to be able to access the first couple of lessons in Moodle before being presented with a request for payment. I've searched for ages on Google and found nothing, and also searched for all the possible terms I could think of here, and again come up short. Apologies therefore for the lack of contributing research/evidence.
I'm using Paypal as the chosen method of payment at the moment. Moodle is version 3.2.
Is there a way to add this kind of option to the 'access restrictions' in the courses themselves?
There isn't an existing way to restrict activity access based on the users enrolment type.
Without writing some custom code, the easiest way to do this is probably to have a separate course containing the pay-walled content, with paypal enrolment set up.
Add an activity to the free course with a link to the paid course. Use access restrictions to hide it until the other activities are complete.
When a user completes the free course content, the link to the paid course will be revealed, and they can click to enrol using paypal.
I'm trying to create an ad for an unpublished page post (link type) via FB Ads API with goal set to WEBSITE_CONVERSIONS. I was a bit puzzled by api docs, so I checked hwo FB Ad Manager does this and notices it send "OBJECTIVE" parameter to FB - something that doesn't exist in API Docs at all
I have a php script in cURL that does the job, sending the following to act_xxxx/adgroups endpoint:
method=post
access_token=xxxxxxxxxxxxxxxxxxxxxxxxxx
name=CURL 001
campaign_id=xxxxxxxxxxxxxxx
targeting={"countries":["US"],"age_min":13,"broad_age":1,"page_types":["feed"]}
bid_type=ABSOLUTE_OCPM
bid_info={"ACTIONS":25}
adgroup_status=ACTIVE
creative={"type":27,"object_id":"XXXXXXXXXXXXXX","story_id":"XXXXXXXXXXX"}
objective=WEBSITE_CONVERSIONS
conversion_specs={"action.type":["offsite_conversion"],"offsite_pixel":["XXXXXXXXXXX"]}
redownload=1
When I go to FB Ad Manager and open the campaign, I can see the ad with correct objective set. Everything looks OK even if I open it with FB Ad Manager.
However, when I send the same request using the application I work on, things get messy. From FB Ad Manager campaign view, everything looks OK, but when I open the ad for editing, I get the following error for my Objective: You've entered a destination that can't be used with the Website Conversions objective. Edit Objective.
So, am I missing something, is there a point in API where this is explained?
Thank you and sorry for the long explanation.
EDIT: After inspecting the ad I created via FB Ads Manager, I noticed that creative it generated had (among other) title, image_url and link_url fields, even though creatives of type 27 shouldn't have those (according to https://developers.facebook.com/docs/reference/ads-api/adgroup/). Maybe it's something new?
After noticing the same issue arises when using the Power Manager, I reported a bug and was explained that this is by design, i.e. currently it's not an option available via API. Users who use API should define their goals implicitly by setting the correct bid info (e.g. "Clicks to website" is set by selecting bid_type=CPC or ABSOLUTE_CPM and setting appropriate bid_info.
We are trying to update\replace the creative of existing adgroup with no success.
According to the documentation is supported:
Updating and deleting ad groups
*Using the ad group ID, you can update the following fields in an ad group:
name
max_bid
adgroup_status
bid_type
targeting
creative*
We pass a new creative id to the adgroup using the graph api , but nothing happens.
How can we update the creative of an existing adgroup?
Found a solution, you can replace the creative but you can't edit an existing creative.
You are only able to rename the creative and/or change the creative's run status. Other elements of the creative cannot be updated.
The AdCreative object is designed to help devs reuse the same creative across multiple adgroups. They have decided to lock it down so it cannot be edited after creation so that clients do not accidentally change the creative of 1,000s of ads without directly editing those ads. The concern is that people may forget which ads a creative is used in and they may end up editing the creative of an ad they don't intend to change.
In order to update let's say the creative's link_url, you need to post to graph.facebook.com/{adgroup-id} with a parameter creative and the value {link_url:"your_new_url}. New creative will be cloned from the old one, the new link url will be set, and the new creative ID will be assigned to the ad group.
At least this works at the moment :)
Started a webpage that now contains a lot of analytic data. Now that I have the client GA Tracking ID I would like to move the data I already have to that account.
Is this possible?
I get the Google Analytics API, I can always fetch all the data I want, but my problem is, upon I have the data how can I send / push this data to other account
in other words, How can I transfer data?
The domain is the same, only the account Id in use was a different one (my own, instead of the client's)
It is not possible:
You cannot currently transfer profiles or account data from one account to another account.
Google Analytics does not provide any flexibility with importing, exporting, or modifying any past data. Any data you have in one account cannot be moved to another.
With GA, the only way to get data in to an account is directly via __utm.gif requests, usually through their JavaScript snippet, but that doesn't allow for any way to import past data, since the date is fixed according to when the data is sent in.
Further, the Google Analytics API is read-only, and doesn't provide any way to import or move data.
(This answer is slightly less true for Universal Analytics
http://piwik.org/ is a good alternative, open source analytics system, not unlike Google Analytics, but without some of the constraints like this.
I think now it's possible to move data from one account to another.
Check out this article:
https://support.google.com/analytics/answer/6370521?hl=en
If you need to reorganize your properties in Analytics, you can move them (and their views) from one account to another.
Moving properties lets you keep your Analytics implementation current with your business. You might be reorganizing after a merger, after an internal restructuring, after hiring a new agency, or you might be developing a new Roll-Up strategy.
This was not possible in 2011 when the question was originally asked. Google added this capability to GA in 2016 (source). In addition to Google's documentation which engray provided, there are several blog posts which discuss how.
How to transfer a Google Analytics property from one Google Account to another
How to Move a Property to Another Account in Google Analytics
How to move a property:
Sign in to Google Analytics & navigate to Admin section.
In the ACCOUNT column choose the account that contains the property you want to move.
In the PROPERTY column, select the property you want to move.
Click Property Settings, then click Move property.
Select the destination account.
Choose your permissions settings.
Click Move.
Confirm data processing, then click Save.
Might be possible to do this as i was curious and found a few forum posts mentioning it:
Log into GA.
Goto the Account List.
Find your web property, you can't click the 'property' itself but a profile under it...
Then click on Admin on top-right side.
Go 'Up' a Level.
For example the breadcrumb says:
'Account list' › 'FOO (www.foo.com)' › 'FOO (www.foo.com) - (Default Profile)'
and now the breadcrumb should say when you click 2nd breadcrumb link:
'Account list' › 'FOO (www.foo.com)'
Now you have an option to add other users to this whole web property by going to the Users tab.
Add an Administrator user to this specific property. You can setup this user for them on gmail that they can change the password later after you set it up (or use their Google Account email they provide and maybe walk through with them to make sure they do it correctly).
Then login as that user, and delete the old user. Then that should 'transfer' to a new account.
What I do in this situation - export all data from Google account and import it into Tableau or QlickView. And use desktop analysis. In any case these data will be actual no more than 2 years.
I am using the GA Data Export API to interact with Google Analytics and I'm making a lot of progress, I am using this URL Endpoint initially to pull all the profiles under an account:
https://www.google.com/analytics/feeds/accounts/default
This URL retrieves each GA ID (profile) and each UA. One thing I've realized is one account can contain multiple UAs and when this happens, this request pulls all profiles. We have a client who has about 115 profiles under like 10 different UAs, and the request takes about 30 seconds for the initial request (and then I believe it must be cached, because it speeds up considerably after this, but then the next day the same thing occurs).
Is there a way to get a list of UA's without pulling the profiles? This way I can query the UA specifically for the profiles instead of pulling each one.
Any advice on this would be really helpful!
Thanks
UPDATE: Here's some documentation on the specific call I am using right now:
http://code.google.com/apis/analytics/docs/gdata/gdataReferenceAccountFeed.html
UPDATE 1: I have found some interesting information in the docs
Once your application has verified
that the user has Analytics access,
its next step is to find out which
Analytics accounts the user has access
to. Remember, users can have access to
many different accounts, and within
them, many different profiles. For
this reason, your application cannot
access any report information without
first requesting the list of accounts
available to the user. The resulting
accounts feed returns that list, but
most importantly, the list also
contains the account profiles that the
user can view.
So this means that you have to use the default accounts call to get these back? Surely, somebody has had this issue before?
So apparently, you can query the account if you know the UA-ID, however there is no way to get back a list of only UA IDs.
One way you can do it is have the user enter their own UA ID instead of having them choose one; not as user-friendly as it could be but better than making the user wait 30 seconds!