Skip to content
This repository has been archived by the owner on Aug 13, 2020. It is now read-only.

Fallback analysis #928

Open
JasonBarnabe opened this issue Dec 13, 2019 · 3 comments
Open

Fallback analysis #928

JasonBarnabe opened this issue Dec 13, 2019 · 3 comments
Labels
data Request for more data visibility enhancement Enhancing an existing feature feature request Request for a feature that does not currently exist in progress This is actively being worked on question Further information is requested
Milestone

Comments

@JasonBarnabe
Copy link
Contributor

As a publisher, I would like a better understanding of why a significant portion of my traffic is unpaid. Is it because of geo? Are CodeFund's advertisers' budgets used up for the month? Something else?

I'm unsure of the inner workings of how ads are matched to publishers, so I'm not sure if this can be reasoned by code. But if, for example, geo matching is generally a major contributor, then maybe we could have fallback reports by country?

@JasonBarnabe JasonBarnabe added the feature request Request for a feature that does not currently exist label Dec 13, 2019
@andrewmcodes
Copy link
Contributor

andrewmcodes commented Dec 15, 2019

@JasonBarnabe I will have @coderberry provide more info. If you’re curious, lines 241-301 of this file is where most of this logic is.

Here’s a quick walkthrough of the lines that apply:

  1. We look for active campaigns with creatives that are available to display (L246)
  2. From those campaigns, we scope them further by timing, since advertisers can specify to only show ads at certain times/days (L248-249)
  3. Then we scope that campaign list by geography (L250-252)
  4. We then get all the premium campaigns from the remaining campaigns (L254). The remaining logic in this method will find a fallback if a premium campaign isn’t available or return if fallbacks are disabled (aka no ad is shown).
  5. For our premium campaigns, we check if the property is set to only display assigned campaigns (which shouldn’t apply to you), and select a campaign from that list (L265-268)
  6. If the property is not specifically restricted to a set of campaigns, we check to see if there are any campaigns in our list for that the property is assigned to (but not restricted to) or any campaigns that are targeting the keywords that your property has. (L270-272)
  7. As of now we have gone from a list of all active campaigns to a list of campaigns that have been scoped down to match your property. The last step is to take that list of campaigns and weed out campaigns that do not have remaining money in their budget, and ones that have specified an hourly budget that is now empty, and randomly select a campaign with an available budget. (L312-314).

Since it’s December, campaign budgets are typically a bit lower as company’s reach their yearly budget caps, and business drops as people go on holiday break. I wouldn’t worry too much about the geotargeting, we are probably just running low on campaigns that are targeting your audience with an available overall/hourly budget.

Sorry if this is a little too technical but thought it would help give you a good idea of what’s going on from a code perspective. Eric will be able to provide more general insight that I don’t have since he is working with our advertisers directly and I just churn out code.

Btw, thanks to your site I have become obsessed with user scripting. My GitHub experience is so much nicer after implementing several scripts from your site. 😁

@andrewmcodes andrewmcodes added question Further information is requested and removed feature request Request for a feature that does not currently exist labels Dec 17, 2019
@coderberry
Copy link
Contributor

@JasonBarnabe I apologize for not responding earlier.

The way we do matching is pretty simple. We match by keyword and country. All campaigns also have a max daily and hourly spend. When a visitor comes to your site and there is budget remaining for that day and hour and the visitor matches the active campaigns, we will show an ad. If not, it displays a fallback.

@coderberry
Copy link
Contributor

@JasonBarnabe one more thing to note. Once we launch our Q1 goals, we should be able to project daily revenue to all publishers and project fallback ratios. The goal is to close the gap and get as much money to our amazing publishers as possible.

@coderberry coderberry added this to the Q2 2020 milestone Jan 8, 2020
@coderberry coderberry added data Request for more data visibility enhancement Enhancing an existing feature feature request Request for a feature that does not currently exist in progress This is actively being worked on labels Jan 8, 2020
@andrewmcodes andrewmcodes removed their assignment Feb 14, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
data Request for more data visibility enhancement Enhancing an existing feature feature request Request for a feature that does not currently exist in progress This is actively being worked on question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants