Creating Optimization Rules for Beginners
To write a new rule, start by clicking on the add rule button to open a drop down menu. This feature is only available to adCore AGENCY plan users.
What would you like to do next? Pause ads? Change bids? All the options are clearly listed in the drop down menu. Choose one, click on it, and then click + New Rule.
Click on the blue link ‘r # reference’ to see the language you’ll need in order to write your rules.
The programming language is made up of constants, functions and variables.
Constants are fixed values.
Variables refer to characteristics, numbers, or quantities that are taken from AdWords. The terms that open up in each rule are related to the attribute you wish to change, as well as the parent attribute.
Functions are preset routines that perform certain tasks. You can use these functions to take certain actions on your requested parameters. Click on the question marks for detailed descriptions on what each function does.
You are now ready to start writing your rule.
- Give your rule a meaningful name
- Set your rule as Public or Private: Private rules can only be seen or used by other users in your AGENCY plan account. Public rules can be used, and copied by all adCore users. Once a rule is public, it cannot be edited.
- Write a detailed description (in words) of what the rule does. Bear in mind that others will use your rule so make sure the description is as clear as possible. Example: This rule will pause all ad groups that have a cost greater than 2 euros.
- Set the value for the new bid.
- Set the requirements in which the rule will make the requested changes.
- Choose the periods of time the rule should apply to. If you click more than one period, adCore will pull reports for all selected periods.
- Set the frequency you want the rule to run.
The best way to learn the Rule Engine’s programming language is through examples. Please take the time to study the examples below, click on the help icons throughout the Engine, try the sample questions below and feel free to send us a ticket if you need more help.
Example 1:
In the example below adCore will change the keyword bids so keywords will convert at the campaign goal. The requirement asks adCore to only change bids if the keyword triggered at least 20 impressions.
Additionally, request that adCore check these requirements for the last 30 days and the last 90 days. If adCore finds keywords that match the requirement in the last 30 days, it will change the bids for those keywords. Then check keywords in the last 90 days, for any keyword that matches the requirement and change those as well. If adCore finds a keywords that meets the requirement for both time periods it will only change the bid once.
This rule will run every day.
Example 2:
Change your ad group bids to make your ad groups appear in a certain average position by using the function named “NumTarget” and let adCore change your bids accordingly. As you can see in the r# reference, this function takes a few arguments:
To use it you’ll need to fill in:
- a number (the current position you appear in now)
- a target number (the position you’d like to be in)
- a factor (a numerical percentage that will make the bid changes more gradual)
- a maximum range (a numerical percentage that puts a cap on the calculation).
This function can be used to create many different rules, but in this example we are using it to change the ad group level bid so that the ad group can be in 3rd position. To do so, we will use the function and fill in the information required:
fnNumTarget(agPos, 3,0.5,1)
- “num” in the above example is the ad group Position (agPos) which will take the current position of each ad group from the AdWords campaign.
- num_target of 3 means we are attempting to make all the ad groups be in position 3.
- A factor of 0.5 (referring to 50%), will make sure the calculation gives a result that is 50% smaller.
Given a situation in which the function above didn’t have a factor and would return a result of 2.0 the bid for that adGroup will be multiplied by 2, doubling the bid. *Note that in the function below 1 = 100% thus no factor)*
fnNumTarget(agPos, 3,1,1) = 2
Given the function below, that does have a factor of 0.5, instead of a result of 2.0 you would get a result of 1.5 because the factor multiplies the increase. (Instead of increasing the bid to double what it was, you are increasing it by half that… one and a half)
fnNumTarget(agPos, 3,0.5,1) = 1.5
4. The max_range- also needs to be referred to in percentages, and represents the maximum increase that can happen. If the difference in position is so great that the bid needs to change drastically, capping the change might be wise. In the example above, there is no cap. 1 represents 100%.
Now that the rule is written, I can put it in to the engine and watch it work its magic.
If you feel it’s necessary, you could add a requirement and ask adCore to only change the ad-group bid if they have enough statistics, say 10 clicks.
We recommend that you try to answer the following examples to practice with the Rule Engine:
1) Change ad-group bid to meet 3rd position, make sure you have at least 5 clicks
Set |
|
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
2) Pause ad-groups where we had no conversions in the last 30d and the campaign was active for at least 28d
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
3) Pause ads where the ad CTR is lower than the ad-group CTR and we had at least 5 calculated goal count
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
4) Change keyword bid to meet our goal + add quality score factor. Only for keywords with at least 2 calculated goal count
Set |
|
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ]1yr |
5) Exclude managed placements where goal expected goal is equal to or greater than 5 and we had no actual goal count
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
6) Add auto placements where we had at least 2 clicks in last 30d
Req. |
|
Period | [ ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
The solutions can be found below:
1) Change ad-group bid to meet 3rd position, make sure you have at least 5 clicks
Set | fnNumTarget(agPos, 3,0.5,1)
|
Req. | (agClicks>=5)
|
Period | [ X ]1d [ ]7d [ ]30d [ ]90d [ ] 1yr |
2) Pause ad-groups where we had no conversions in the last 30d and the campaign was active for at least 28d
Req. | (agConv=0) and (fnCampActiveDays(30)>=28)
|
Period | [ ]1d [ ]7d [X]30d [ ]90d [ ] 1yr |
3) Pause ads where the ad CTR is lower than the ad-group CTR and we had at least 5 calculated goal count
Req. | (adStatus=ACTIVE) and ((adClicks/adImpr)<(agClicks/agImpr)) and (fnGoalCountCalc(5)>=5)
|
Period | [ ]1d [ x]7d [x]30d [x]90d [x] 1yr |
4) Change keyword bid to meet our goal + add quality score factor. Only for keywords with at least 2 calculated goal count
Set | fnBidToGoal()*fnBidQualityFactor(mid)
|
Req. | (fnGoalCountCalc(2)>=2)
|
Period | [ ]1d [ x]7d [x]30d [x]90d [x] 1yr |
5) Exclude managed placements where goal expected goal is equal to or greater than 5 and we had no actual goal count
Req. | (fnGoalCountExp()>=5) and (fnGoalCountAct()=0)
|
Period | [ ]1d [ x]7d [x]30d [x]90d [x] 1yr |
6) Add auto placements where we had at least 2 clicks in last 30d
Req. | (plAutClicks>=2)
|
Period | [ ]1d [ ]7d [x]30d [ ]90d [ ] 1yr |