TIP: You can type at any time to perform a new search.
Social Media Advertising LinkedIn
social_media_advertising_linkedin · OCA/social
Security findings
- Repository
- OCA/social · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Social Network
- Folder size
- 0.67 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/social
- Last tracking update
- 2026-10-08 03:00:02
- Authors
- Odoo Community Association (OCA), Binhex
- Maintainers
- Odoo Community Association (OCA), Binhex
- Committers
- OCA-git-bot, Edilio Escalona Almira
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module plugs LinkedIn Ads into *Social Media Advertising*. Its lists hang from a *LinkedIn* menu of their own, under *Advertising* and under *Configuration* > Stages, so they never show the records of another social media. Main features: - Campaign group and campaign management synchronized with LinkedIn Ads: create them in LinkedIn from Odoo (in draft state) or import the existing ones, and link posts to campaigns as sponsored creatives. - The LinkedIn statuses of campaigns, campaign groups and ads (Draft, Active, Paused, Archived...) are declared as stages of *Social Media Advertising*, so the badges and the status bars show the real LinkedIn vocabulary.
Code Analysis
Views touched (7)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
social_account_view_form_advertising_account_inherit |
social.account.view.form.advertising.account.inherit.advertising.linkedin | social.account | form | Inherits social_media_advertising.social_account_view_form_inherit |
social_account_view_form_inherit |
social.account.view.form.inherit.advertising.linkedin | social.account | form | Inherits social_media_advertising.social_account_view_form_inherit |
social_advertising_ad_view_form_inherit |
social.advertising.ad.view.form.inherit.advertising.linkedin | social.advertising.ad | form | Inherits social_media_advertising.social_advertising_ad_view_form |
social_advertising_campaign_group_view_form_inherit |
social.advertising.campaign.group.view.form.inherit.advertising.linkedin | social.advertising.campaign.group | form | Inherits social_media_advertising.social_advertising_campaign_group_view_form |
social_advertising_campaign_group_view_tree_inherit |
social.advertising.campaign.group.view.tree.inherit.advertising.linkedin | social.advertising.campaign.group | tree | Inherits social_media_advertising.social_advertising_campaign_group_view_tree |
social_advertising_campaign_view_form_inherit |
social.advertising.campaign.view.form.inherit.advertising.linkedin | social.advertising.campaign | form | Inherits social_media_advertising.social_advertising_campaign_view_form |
social_advertising_campaign_view_tree_inherit |
social.advertising.campaign.view.tree.inherit.advertising.linkedin | social.advertising.campaign | tree | Inherits social_media_advertising.social_advertising_campaign_view_tree |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (9)
New fields (1)
-
linkedin_missing_ads_scopesCharcompute='_compute_linkedin_missing_ads_scopes'help='The Advertising API scopes the token of this account was not granted. A token keeps the scopes it was issued with, so an account associated before this module was installed has to be authorized again to reach the Ads API.'
-
action_import_campaigns(self)
New fields (4)
-
linkedin_referenceCharhelp='Organization or person the advertising account advertises on behalf of.'readonly=Truestring='LinkedIn Owner' -
linkedin_serving_statusCharhelp='Why LinkedIn is serving the ads of this advertising account, or not: RUNNABLE when it is eligible, otherwise the reasons why it is not, such as BILLING_HOLD or ACCOUNT_TOTAL_BUDGET_HOLD.'readonly=Truestring='LinkedIn Serving Status' -
linkedin_statusSelectionhelp='Status of the advertising account on LinkedIn.'readonly=Truestring='LinkedIn Status' args: [('DRAFT', 'Draft'), ('ACTIVE', 'Active'), ('CANCELED', 'Canceled'), ('PENDING_DELETION', 'Pending deletion'), ('REMOVED', 'Removed')] -
linkedin_typeSelectionhelp='Enterprise advertising accounts are created by LinkedIn itself and cannot be test accounts.'readonly=Truestring='LinkedIn Type' args: [('BUSINESS', 'Business'), ('ENTERPRISE', 'Enterprise')]
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (9)
-
currency_idMany2one → res.currencyrelated='campaign_group_id.currency_id' args: 'res.currency' -
daily_budgetMonetaryhelp='Maximum amount to spend on this campaign per day. The campaign group total budget limits the overall spending.'tracking=True -
linkedin_formatSelectioncopy=Falsedefault='STANDARD_UPDATE'help="Ad format of the campaign on LinkedIn. A campaign only accepts posts of its format, and LinkedIn does not allow changing it once the campaign is created, so a post with a video needs a campaign of the 'Single video' format."string='LinkedIn Ad Format'tracking=True args: [('STANDARD_UPDATE', 'Standard update'), ('SINGLE_VIDEO', 'Single video')] -
linkedin_is_testBooleancopy=Falsehelp='Whether LinkedIn flags this campaign as a test campaign.'readonly=Truestring='LinkedIn Test Campaign' -
linkedin_lockedBooleancompute='_compute_linkedin_locked'help='LinkedIn no longer accepts changes on this record.'store=True -
linkedin_needs_updateBooleancopy=Falsehelp="The campaign was modified in Odoo after being synchronized with LinkedIn. Use the 'Update in LinkedIn' button to push the local values."readonly=Truestring='LinkedIn Pending Changes' -
linkedin_objectiveSelectioncopy=Falsehelp="Goal of the campaign on LinkedIn, required for the 'Single video' format:\n- Brand awareness: reach as many people as possible.\n- Video views: get the video of the post watched.\n- Website visits: send traffic to a page.\n- Engagement: get likes, comments and follows.\nLinkedIn has three more objectives (lead generation, website conversions and job applicants) that need a lead gen form, conversion tracking or LinkedIn Talent Solutions, which are configured outside Odoo and are therefore not offered here."string='LinkedIn Objective'tracking=True args: [('BRAND_AWARENESS', 'Brand awareness'), ('VIDEO_VIEWS', 'Video views'), ('WEBSITE_VISITS', 'Website visits'), ('ENGAGEMENT', 'Engagement')] -
linkedin_political_intentSelectioncopy=Falsedefault='NOT_POLITICAL'help="Declaration required by LinkedIn to create a campaign: I confirm this is not political advertising. None of my ads qualify as political advertising under the law of the targeted countries, including EU law for ads targeted to the EU. Change it to 'Political advertising' when the campaign does qualify as such."string='LinkedIn Political Intent'tracking=True args: [('NOT_POLITICAL', 'Not political advertising'), ('POLITICAL', 'Political advertising'), ('NOT_DECLARED', 'Not declared')] -
unit_costMonetaryhelp='Bid amount per click, impression or other event depending on the pricing model. LinkedIn only applies it with manual, target cost or cost cap bidding; with automatic bidding it is ignored.'tracking=True
-
action_archive_linkedin(self)Archive the campaign on LinkedIn. The Ads API does not allow deleting a campaign, so the campaign is kept in Odoo with its performance data and becomes read only. -
action_publish_linkedin(self)Create the campaign group and the campaign on LinkedIn in DRAFT. The campaign can then be selected on posts and activated from Campaign Manager when desired. -
action_update_linkedin(self)Push the local name, unit cost and daily budget to LinkedIn. -
write(self, vals)
New fields (4)
-
currency_idMany2one → res.currencyhelp='Currency of the total budget, sent to LinkedIn as the currency code of the campaign group. LinkedIn only accepts the currency of its advertising account.' args: 'res.currency' -
linkedin_lockedBooleancompute='_compute_linkedin_locked'help='LinkedIn no longer accepts changes on this record.'store=True -
linkedin_needs_updateBooleancopy=Falsehelp="The campaign group was modified in Odoo after being synchronized with LinkedIn. Use the 'Update in LinkedIn' button to push the local values."readonly=Truestring='LinkedIn Pending Changes' -
total_budgetMonetaryhelp='Maximum amount to spend across all the campaigns and creatives of this group for its entire duration. It cannot be lower than the daily budgets of its campaigns.'tracking=True
-
action_archive_linkedin(self)Archive the campaign group on LinkedIn. The Ads API does not allow deleting a group. LinkedIn applies the same status to its campaigns, so run an import afterwards. -
action_publish_linkedin(self)Create the campaign group on LinkedIn in DRAFT status. The group is also created automatically when the first campaign of the group is published with the 'Create in LinkedIn' button. -
action_update_linkedin(self)Push the local name and total budget to LinkedIn. -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
creative_urnCharcopy=Falsehelp='URN of the sponsored creative of this publication on LinkedIn.'string='Creative Reference'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.