LocalBusiness & Organization schema together in JSON-LD - schema.org

I have a local business, I have a blog, and I have services. I'm a digital marketer, you can see my schema here: https://www.sitecentre.com.au (view the source code). Most of it's on the home page, but some is on blog articles are /blog and click an article.
I feel as if I'm doing it wrong.
Schema is really confusing, so Google has announced, don't include Organization schema on every page, it's only needed on one. So, I set the "#id": "https://www.example.com/#Organisation" and I add that schema to the home page only, now where do I put my LocalBusiness? I can set it to "#id": "https://www.example.com/#LocalBusiness".
Then I add WebSite and WebPage to the home page as well.
Now let's say one of my service pages like Hosting.
I don't need LocalBusiness or Organization on this page? Because it's on the home page? Am I right here? So on the Service page I could have Service schema, Review, WebPage but not WebSite, and BreadcrumbList?
The issue is if I then do something like publisher and call the organisation url it fails in the Google Schema Tester because Organization isn't found on that page.
Same goes for the blog. Obviously, on a blog I need to have a publisher like: "publisher": { "#id": "https://www.example.com/#Organisation" }.
This will fail because Organization schema is on the home page. Not the current page.
It gets technical because on the home page Google recognizes only LocalBusiness not Organization because both are on there.
It's hard to workout what to do.
Now if I do something like put all my Organization or LocalBusiness schema on the home page then on blog I put both but with limited data and have the #id pointing to the home page I can pass validation but does this not overwrite the home page or because the #id matches the home page it uses the home page?
Does anyone have an answer? Please don't link me to the definition or some generator. I've read it all. Trust me, I've read IT ALL. The confusion isn't how to write Schema.org or why. It's answering a question based on experience because the answer isn't actually out there.

LocalBusiness is a sub-type of Organization. What this means is you can switch your Organization entity to be a LocalBusiness entity and it will still function as an Organization, with the extra bits that LocalBusiness add.
So you can add a detailed LocalBusiness on the home page that includes all the Organization info and the LocalBusiness info. And give it an id like you suggested:
https://www.example.com/#LocalBusiness
This is how you can reference it from other pages. When you need to reference your business, include a very basic version of the LocalBusiness that includes the type, name, its id and the url. That's enough info needed on those other pages, while also indicating there is more info available about the business under that id and url. e.g.
"publisher": {
"#type": "LocalBusiness",
"#id": "https://www.example.com/#LocalBusiness",
"url": "https://www.example.com/",
"name": "Example Ltd"
}

Related

Schema.org Organization URL markup issue

In a web page each registered company has own profile page with a list of records belonging to a company. I'm using Schema.org Organization structured data for that page and that schema markup requires URL property. As I understand it should contain e.g company home page url. The problem is that we do not store that kind of information.
If company profile URL in our page is: www.mypage.com/unique-company-profile can I use same url in schema URL property or it has to be an URL with a different domain?
Schema.org doesn’t require the url property for Organization (it never requires any property). Consumers (like Google Search) require properties for their features (like rich results). So, it’s perfectly fine to have an Organization without url; you might just not get a certain feature in a certain search engine.
As far as Schema.org is concerned, the url property can have a site-internal URL as value. A common structure is to use url for your own page about the organization, and sameAs for the organization’s official site.
<link itemprop="url" href="/organizations/acme" />
<a itemprop="sameAs" href="https://acme.example/">official site</a>
That said, again, a consumer might have certain restrictions; if you care about the feature they offer, you have to check their documentation.

Duplicate or link to WebSite JSON-LD?

I'm replacing the microdata (itemscope et al) on our sites with JSON-LD. Do I need to declare the WebSite on every page, or can I place it once on the home page?
If the latter, will processors (by which I mean Google) tie each page to it automatically via the domain name, or is there some way to link to it? Given that "Linked Data" is right there in the name, I've found no examples that make use of it. They all replicate or embed the data directly in the thing that's linking.
For example, I want to link to our YouTube videos that we embed in articles, but Google doesn't understand a URL for the video property. If I expand it into a VideoObject, Google complains that I don't know the width, height, duration, etc. All that data is on youtube.com at the URL I'm specifying. Why can't it pull the video information itself?
Do I need to declare the WebSite on every page, or can I place it once on the home page?
From the perspectives of Schema.org and Linked Data, it’s perfectly fine (and I would say it’s even the best practice) to provide an item only once, and reference it via its URI whenever it’s needed.
In JSON-LD, this can be done with #id. For example:
<!-- on the homepage -->
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebSite",
"#id": "http://example.com/#site",
"hasPart": {
"#type": "WebPage",
"#id": "http://example.com/"
}
}
</script>
<!-- on another page -->
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebPage",
"#id": "http://example.com/foobar",
"isPartOf": {"#id": "http://example.com/#site"}
}
</script>
Whether Google actually follows these references is not clear (as far as I know, it’s undocumented)¹. It’s clear that their testing tool doesn’t show the data from referenced URIs, but that doesn’t have to mean much. At least their testing tool displays the URI (as "ID") in case one is provided.
If you want to provide a URL value for the video property, note that URL is not one of its expected values. While Schema.org still allows this (any property can have a text or URL value), it’s likely that some consumers will handle only expected values. It’s also perfectly fine to provide a VideoObject value if you only provide a url property. The fact that Google’s testing tool gives errors doesn’t mean that something’s wrong; it just means that Google won’t consider this video for their video-related rich results.
¹ But for the few rich result features Google offers, authors would typically not need to reference something from another page anyway, I guess. Referencing of URIs is typically done for other Semantic Web and Linked Data cases.

Do I need to repeat all the categories on all sub-pages?

I am marking up the content on my website with microdata. I am a Local Business and use this hierarchy:
Organization/LocalBusiness/TravelAgency/
Do I need to repeat all the relevant Properties for each category: PLace, Organization, Local Buisness and Travel Agency in each page of my website?
http://schema.org/TravelAgency
I have many sub-pages and it is over-kill to repeat everytime on the page the location, address, telephone, etc. of the business.
For specific sub-pages can I cut out the higher categories?
For example: If I have a page: Special Offer Weekend in New York
Do I add all the Properties or can I just add the ones relevant for TravelAgency and potentially Price?
http://schema.org/PriceSpecification
Thanks for your help
PS: I ask this because I have read that it is not good to have invisible content for the user.
Schema.org doesn’t define any required properties, so everything is optional.
But note that there is no concept of "website" in Microdata. The Microdata always gets parsed per document. So if a Microdata consumer parses your "Special Offer Weekend in New York" page, it will not get the telephone/address/etc. of the business, even if these would be specified on all of your other pages.
If you don’t want to markup all the visible content about your business on every page, you might want to link to a page where this data is marked up (e.g., the front page) by using an appropriate Schema.org property.
Example: On "Special Offer Weekend in New York" (Offer), you could use the seller property to link to your front page (TravelAgency).
It’s not defined in Microdata that those links should be followed for parsing Microdata, but that way parsers can (if they want to) understand that all these pages belong to the same TravelAgency.

Connect app with existing Page

I have created a web app that authenticates users on our page and I'd like to connect it with an existing Page, but cannot find that option. I only see "Create Page" in Advanced options, but that's not really what I need.
I figured since it is possible to connect an old app with an existing Page because of the group profiles being removed, it should be possible to connect new apps with existing Pages as well. Am I wrong to assume that, or just blind and did not find that option?
Sure - this is possible.
Please read the documentation for "adding a tab application to a page" at this link :
https://developers.facebook.com/docs/reference/dialogs/add_to_page/
Essentially what you have to do is initiate a dialog so that you can choose what page you want to add your application to. A direct URL example would be this :
https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID
&display=popup&next=YOUR_URL
Dont forget to substitute YOUR_APP_ID for your app_id and next to some other URL (doesn't have to be related to your application - it can be simple facebook.com
I have created a little bookmarklet to ease the prosess -
javascript:app_id=prompt("Enter App ID"); window.open("https://www.facebook.com/dialog/pagetab?app_id="+app_id+"&display=popup&next=https://facebook.com");
More info on bookmarklets
We as facebook developers are solely responsible for keeping up-to-date with the changes that 3rd party API's, on which we base our development, make to their systems.
A great place to keep updated on changes and new features would be the Facebook Developers Blog and the Facebook Developers Roadmap.
I tried the chosen answer but it didn´t workout..
First option:
You should use the Fan Page Id on the place of a random website.
http://facebook.com/add.php?api_key=YOUR_APP_KEY&pages=1&page=YOUR_PAGE_ID
YOUR_APP_KEY -> You can get it from application settings, its App Id
YOUR_PAGE_ID -> You can get it through Graph Explorer (https://graph.facebook.com/[PAGE_NAME])
Source: https://stackoverflow.com/a/15739910/1598935
Second option:
Categorize your existing page under "App Page" (found under "Brands & Products").
Change your page name to mach your App name.
Go to your App and select "App Details"
Under "Contact Info" you will find "App Page".There you will be able to create a new page or if all went well, select your page from a list.
Source: https://stackoverflow.com/a/13904144/1598935

Object Debugger Error Scraping Page ... near solution?

I have a very strange issue while sharing a page, probably connected to DNS used by Facebook.
I usually share pages from my own sites with no problem. In only one new site, I cannot correctly share any page.
where is the problem?
If I try to share a page from this new site (www.tarocchibluemoon.com), I expected to share an image, a page title etc.
However, I didn't see any images choosen from the ones in my page.
I used the debugger developers.facebook.com/tools/debug
and typed in the site http://www.tarocchibluemoon.com having a beautiful "Critical Errors must be fixed"
Looking deeper in Graph API I see:
{
"url": "http://www.tarocchibluemoon.com/",
"type": "website",
"title": "www.tarocchibluemoon.com",
"image": [
{
"url": "http://www.tarocchibluemoon.com/images/domain_reserviert.gif"
}
],
"updated_time": "2011-11-14T20:43:22+0000",
"id": "10150336639081017"
}
This means that debugger sees the site like it was a month ago when the provider showed the classic default page shown when you buy a new domain with written inside "The domain is reserved" (a page like this example).
Probably Facebook didn't received the update to the DNS done when I published the site!
I tried also to change again the IP address of my site but with no results.
I think the problem is the canonical tag in your head section (end of line 3):
<link href="http://bluemoon.thiellaconsulting.com/Default.aspx" rel="canonical" />
Facebook tries to scrape your canonical url - but in this case that url doesn't exist so you get a 'can't download' error.
If you switch that tag so it points to your current domain (or remove it altogether) you should allow Facebook to scrape the page and update it's graph entry.