This article is a stub. You can help the IndieWeb wiki by expanding it.
A checkin is the action of checking into a location and sharing that information. The term is often also used as a verb, to check in.
Services like Foursquare, Gowalla (shutdown after being acquired by Facebook), Dodgeball (shutdown after being acquired by Google), Google Latitude (also shutdown by Google) are social community sites specifically designed for sharing checkins.
The indieweb community is exploring how to post checkins to one's own website (likely privately), and how/when to syndicate (in POSSE style) such checkins to checkin-related community sites.
Why should you publish checkins? A few use cases:
If a high enough percentage of your friends use checkins, or view them, you can checkin to increase the chance of serendipitous meetups happening.
But to enable this use-case, checkins have to be really simple and unobtrusive, i.e. like the old Dodgeball txting UI was so simple that it made it very efficient to do so, so more people did so more often, thus enabling serendipity.
I'm entering a specific venue, I'd like to quickly/automatically capture the fact that I'm entering that venue (similarly for exiting) for personal logging / quantified self purposes.
Personal tracking could be done purely with private posts, however, friends-only checkin posts, without any expectation of anyone showing up, serve the purpose of also letting friends know where you are (and thus providing a feeling of being implicitly connected, even if mediated through such an indirect means).
I'm visiting a city other than my home town, and rather than try to figure out who I know may be in that town at the moment and compile far too many explicit messages or a long BCC email, I'd like to announce to my friends who happen to also be in that city that I've arrived there and will be around a bit in case they'd like to meet up.
I'm out at a coffee shop and want to quickly see if any friends are are nearby and might interested in getting brunch/lunch/dinner/drinks together.
finding people in a crowd
I've just arrived at a busy place/event, and I want to see if other people I think are coming have arrived yet so I know whether to look out for them.
- I want my local coffee shop to see I'm their best customer.
- I want my boss to see I'm always in the office.
- I want people to see I regularly help out at the local children's hospital.
awkward situation mitigation
- I want to see who else is here before I go in, so I can avoid people I don't want to see.
- I want to tell the world I'm somewhere I'm not.
- geocaching is a game in which players try to find containers hidden at particular locations and checkin usually via a silo site
- geohashing is a game inspired by an XKCD comic in which players checkin to coordinates randomly-determined each day
why not to checkin
- home. Frequent checkins at home can be annoying to your friends that see your checkins.
- work. Similarly, if you mostly checkin to work at the same time every day, that too can be annoying to your friends.(from personal experience with early Dodgeball usage).
- privacy. Some people won't checkin to maintain privacy or are worried about potential stalkers and/or harassment. Checkin after the fact may be a potential solution. See also postsquare.
How to markup a checkin post:
- Use h-entry
- Use the property
u-checkinand make the value the h-card for the venue
- Include your other h-entry properties as normal
- Use the property
<div class="h-entry"> <span class="p-name">Checked in to <a href="http://example.com/venue" class="u-checkin h-card">Venue Name</a></span> ... </div>
or a checkin with content from the user
<div class="h-entry"> <span class="p-name">Checked in to <a href="http://example.com/venue" class="u-checkin h-card">Venue Name</a></span> <div class="e-content">User-entered text as part of the checkin</div> ... </div>
of course if you want to include latitude/longitude information for the venue, then your h-card will be larger:
<div class="h-entry"> <span class="p-name">Checked in to <span class="u-checkin h-card"> <a href="http://example.com/venue" class="p-name">Venue Name</a> <data class="p-latitude" value="34.009136521684"></data> <data class="p-longitude" value="-118.49301381226"></data> </span> </span> <div class="e-content">User-entered text as part of the checkin</div> ... </div>
Most consumers of checkins will ignore the
name of the h-entry, so that is really only there for fallback for consumers that don't recognize the checkin property.
What are best approaches to POSSEing checkins?
POSSE to Foursquare
Ben Werdmüller POSSEs his checkins to Foursquare with Known.
POSSE to Facebook
Ryan Barrett currently manually POSSEs from his site to Facebook, manually picks the venue etc.
Can likely call Facebook API to get a list of venues at a geo location.
Could also create a Bridgy Publish feature that looked checkin post with a Facebook venue URL and then POSSE the checkin to FB.
For those not using POSSE yet.
PESOS from Foursquare
Felix Schwenzel modified OwnYourGram by Aaron Parecki to allow PESOS of checkin on Foursquare (really Swarm) via micropub using OwnYourCheckin.
PESOS from Swarm
OwnYourSwarm, also by Aaron Parecki, PESOSes your Swarm check-ins, photos, and "with..." person-tags to your own site via micropub.
PESOS from Geocaching sites
Dan Q has implemented a plugin which streamlines PESOS of geocaching logs from the dominant silos (e.g. Geocaching.com) into WordPress.
In rough launch/implementation order:
Barnaby Walters is using Taproot on waterpigs.co.uk to post notes with location data (including rev-geocoded address data) represented with an embedded h-card venue and in an embedded map, since 2013-01-24. Currently manually tagging specific check-ins with #checkin, but is working on adding richer venue information. Examples:
- See Barnaby's notes tagged checkin for more
- And notes tagged location
Tom Morris is using Ferocity on tommorris.org to publish notes with venue data in an embedded h-card with geo microformat hyperlink (with title="lat;long") since 2013-02-02 . Examples:
Ben Werdmuller is using Known to post checkins since ????-??-??. e.g.:
Michael Owens is using indie.js to post checkins with POSSE to Foursquare since 2014-09-07 e.g.,
- https://mowens.com/checkins/2014/09/07/1/checking-in-from-my-own-website (POSSE)
- https://mowens.com/checkins/2014/10/16/1/ (PESOS)
Ryan Barrett is using WordPress with his own modifications to post checkins since 2014-11-13, usually PESOSed via ownyourcheckin, occasionally manually POSSEd to Facebook, e.g.
- checkin with nested event: https://snarfed.org/2014-11-13_11514
u-featured(broken due to using class attribute) image and nested:
p-location h-card(URL, name), with nested:
h-event(just URL, name)
- Note 1: We haven't specified how to check-in at an event (something Swarm lets you do at some venues, like movie theaters), so this is an interesting prototype to further analyze.
- checkin with photo: https://snarfed.org/2014-11-24_11741
- same as previous, but no u-featured, and a "u-photo" property on the photo img inside the h-entry instead
- checkin with a person: https://snarfed.org/2014-12-07_11859
- same as checkin with nested event, but without u-featured, and inside h-as-checkin:
- nested h-card for the person with, with name & URL
- same as checkin with nested event, but without u-featured, and inside h-as-checkin:
- checkin with two photos: https://snarfed.org/2014-12-23_12146
- same as checkin with photo, however, the two photos are not marked up with u-photo
- checkin with two people and a photo: https://snarfed.org/2014-12-27_12198
- same as checkin with a person, both people are marked up as h-cards inside the h-as-checkin.
- the photo is not marked up with u-photo
Ben Roberts is using google maps static map to generate display in Postly since 2014-12-24. e.g.:
Chris Aldrich began owning his checkins on 2015-02-15 using Known while also syndicating to Foursquare. On 2016-04-03 he began owning his checkins using micropub to his WordPress site using OwnYourCheckin and WordPress Post Kinds.
Ryan Rix (rrix) can post checkins from Arcology] since 2016-04-13 by creating a post with the CHECKIN tag on it and then calling a function `arcology-checkin-get-venue-id' which calls out to the Foursquare API to pull and cache the information for a venue.
Martijn van der Ven
Martijn van der Ven posted his first checkin during HWC 2016-12-14 based on a discussion of the format on IRC.
Sebastiaan Andeweg also posted a checkin during HWC 2016-12-14, from the same venue as Martijn van der Ven. His CMS recognises the 'checkin' field now and renders it as a
.u-url. No real posting UI or venues yet.
- 2017-05-19: changed my storage of checkins to a full embedded h-card (instead of just a name and url field) to support OwnYourSwarm, to use Swarm/Foursquare's posting UI and venues.
Aaron Parecki added support for posting checkins using p3k on 2017-03-18.
Barry Frost posted his first checkin via Micropublish on 2017-03-15 to his Transformative site. He then used OwnYourSwarm to post his second checkin on 2017-03-20.
Eddie Hinkle added support for posting checkins using abode on 2017-04-21. This is powered by using OwnYourSwarm, and He is importing previous Swarm posts as well.
Ravi Sagar is using Drupal site to post notes with location. Not yet using the h-card format though. Also using another Known site http://www.sagar.ravi.pro and evaluating how checkins can be sent to Foursquare and vice versa.
Marty McGuire added support for checkins on 2017-06-23.
He uses OwnYourSwarm to syndicate checkins from Swarm to his own site. Checkins from prior to 2017 have been backfilled using aaronpk's Swarm-Checkins-Import.
His checkin posts typically have:
- a map image with a pin via a selfhosted copy of staticmaplite, which pulls and caches images from Stamen's hosted Toner tilemaps.
- plain text summary (e.g. "📍 Checked in at VENUE, City, Region")
- any photos posted to Swarm
- any text note attached to the checkin
- person-tags of other Swarm users. Mapped to their own domain, if possible.
Vika's pyindieblog is able to render checkins since 2019-09-09: https://fireburn.ru/posts/1567956895
The venues are filled in with curl (for now), an interface is planned.
The checkin property in Micropub can either be a URL (then it's fetched and a minimal h-card is created to help XRay parse the checkin) or an h-card object (in which case its inserted directly). The h-cards are stored in the /hcards/<id> (no listing of h-cards for now, but geoqueries are supported!)
capjamesg uses his own Micropub client to publish checkins on his site. He also uses OwnYourSwarm to syndicate Swarm checkins back to his own website.
Checkins are listed on a dedicated /checkins page which shows a feed of checkins. The feed is marked up using the h-feed microformat.
Here is an example checkin:
Manton Reece is using Micro.blog and OwnYourSwarm to post check-ins to: https://manton.coffee
Google Maps is used to show the location from longitude/latitude stored in Micro.blog.
Manton has also imported old check-ins from Ohai / App.net with a script that sends data via Micropub: https://www.manton.org/2022/07/05/importing-checkins-from.html
Some folks have experiments or prototypes of posts resembling or approximating checkins but are lacking key information in some way, e.g. explicitly marked up location information.
Tantek Çelik has manually PESOSed a couple of checkins to his site tantek.com from inadvertent Twitter cross-postings from Swarm on 2015-03-28:
- http://tantek.com/2015/087/t2/athletic-tshirts-sale (on Swarm, on Twitter)
- http://tantek.com/2015/087/t1/post-bike-riding-yum (on Swarm, on Twitter)
These posts are notes that show how a checkin could be presented in plain-text form, i.e. how a full checkin post could be POSSEd to Twitter, based on how Swarm cross-posts checkins to Twitter. Note how the Twitter copies have a permashortlink after their text content that links to the respective Swarm posts.
Kyle Mahan used Red Wind on kylewm.com to publish checkins since 2014-03-24. E.g.:
- Archived example
- added support for checkins to actual (permalinked) venues on 2014-10-26.
- checkin: Archived example
- venue: Archived example
- Venues are saved as a name, lat/lng location, and reverse geocoded location. Permalinks are name-locality-region. Still TBD what to do about duplicates within a locality, e.g. chipotle-san-mateo-california
Past discussion sessions on indieweb checkins:
- 2012-181 OSBridge BarCamp Day: Foursquare is down! Let's figure out IndieWeb Checkins!
- 2012-182 IndieWebCamp 2012: Open Checkins
- 2016-023 IndieWebCamp 2016/NYC: Checkins, Locations, Venues
- 2017-133 IndieWebCamp 2017/Düsseldorf: Checkins
Pretty good notes in there that could be abstracted and captured in general form in new sections here.
More explorations/brainstorms than FAQ yet.
just a note with a location
Is a checkin actually a separate post type?
Or is it just a note with location information?
Or does a note with location information become a checkin only when the location is a specific venue?
E.g. what are the user-expected/intentioned differences between:
- checking into Foursquare
- posting a note on Twitter with location information?
The posts page has some discussion about the general question about explicit vs. implicit post kinds.
More ideas than creations, some thoughts about how individual indieweb community folks want to do indieweb checkins.
Main article: venues.
I'd rather post a check-in on my own site, and have it use a venue URL that is *also* on my own site. Then at that indieweb venue URL, it can link to equivalents on Foursquare, OSM, FB, and whatever other centralized venue databases are created in the future. - Tantek 
Experience with Foursquare's "community generated/patrolled venues database" is that a few nitwits can pollute/damage the data quite badly, with deletions, overmergings etc. Sad to say, same thing happens with Wikipedia (excessive deletions, overmergings). Thus little hope that a "community hosted venues database" wouldn't have all the same problems, if not worse.
Just use hCard on indieweb venue URLs.
In general it is good to use multiple source of geolocation information in order to increase accuracy and decrease latency to provide this information when querying for and presenting (multi-factor prompts) nearby venues.
GPS is great. Except when you are inside a building - it doesn't work. Then you go and get on the Tube, and pop out the other side. It takes time for GPS to seek. You spend much more time waiting for GPS to work out where you are than you do just typing in the name of the bar or whatnot.
wifi-assisted location determination can do better than GPS when inside a building.
Last time(s) you checked in (or GPS was detected), you were moving in this direction at this pace, therefore you're likely at this location now.
The last n times you checked in at place A, you checked in at place B within the next thirty minutes.
You just checked in with friend F at location A, your friend F just checked in at location B, therefore you might be at location B as well.
plain text design
Like other types of posts (e.g. likes), it makes sense to figure out a plain text design for checkins, for various contexts.
- Foursquare provides a plaintext version of checkins when viewing a user's history page.
- "aaronpk checked in at Laurelhurst Theater & Pub for Whiskey Tango Foxtrot" 
- Ryan Barrett's page of checkins: https://snarfed.org/?s=checked shows a plain text equivalent (summary) for each individual checkin, e.g.
- "Checked into Pleasanton Ridge Regional Park with Vanessa Barrett and Richard Barrett."
- "checked into" venue, "with" person "and" person
- "Checked into Pleasanton Ridge Regional Park with Vanessa Barrett and Richard Barrett."
Background: "offline foursquare" projects
- aaron straup cope's privatesquare: https://github.com/straup/privatesquare
Use-case: wanting to checkin to a location without (good?) connectivity.
- special case of "async" checkins?
- Tantek Çelik I will often take a photo at a location where I want to checkin but lack connectivity (yet somehow the photo gets close-enough location info from SSID triangulation etc.), and then later use Instagram to post the photo with an explicit venue and cross-post from there to Swarm to do a "Postsquare" checkin.
- Problem: Instagram's venues database (since 2014?) is based on Facebook's venues which is of very poor quality in comparison to Foursquare/Swarm’s venue database.
- Chris Aldrich I'll often either forget to checkin or purposely not checkin for social reasons (i.e. not wanting to be rude in pulling my phone out and spending the time checking in when friends, colleagues, etc. are around). In these cases it would be nice to check in after-the-fact. To some extent, Swarm allows this functionality--see the documentation below. This could potentially be done in stages on one's own site, either by POSSE or potentially PESOS. As an example, at an event like a birthday party, I might like to checkin when I arrive (to indicate presence), then take photos (of drinks, food, atmosphere, other participants) as the event proceeds (which could be uploaded in real time, or if phone battery, connectivity, other social circumstances dictate they could be uploaded afterward). Finally, it would be nice to have the ability to checkout, or alternately provide a timestamp for when I left the location/event. Most silo checkin services only have a single timestamp for the checkin (and not necessarily for the actual arrival/departure times.)
- Re: fake checkins likelihood:
Tantek Çelik: I disagree with this premise and expect the opposite is true based on existing silo vs indie posting. People post all kinds of lower quality (e.g. sometimes fake) content on silos, and when the same people start posting to their own site, typically the quality improves, perhaps because they feel their identity is more (publicly) tied to it, or for private posts, why bother lying to yourself on your own site? With checkins I would expect the same, higher quality checkins (fewer fakes) on a personal site than a silo.
Aaron Parecki: If checkins weren't posted on Foursquare, but instead were posted on each person's own website, the possibility of fake checkins is much greater.
- The fake checkin example was more about spam than fake checkins on legitimate websites. Aaron Parecki 14:10, 15 October 2016 (PDT)
- Re: four digit code on a TV at the venue:
Tantek Çelik: The extra 4-digit code thing sounds like "work", and as a user I'd always just blow it off, or blow off anything that required it, unless there was a very good incentive to bother with it (e.g. coupon / discount at the venue). Concrete example of the 4 digit code laziness problem. Coffee Bean & Tea Leaf (California based coffee / cafe chain) used to have a 4 digit code on their TVs for logging into their captive portal for their free wifi. They eventually got rid of it.
Aaron Parecki: The venue's TV screen always displays a 4-digit code and instructs people to include that code in their checkin post on their website.
Checking in to Events
Swarm provides a feature that allows users to check in for an event while checking in to a location.
- Venue managers add events to a schedule. When a user checks in during the time of the event, Swarm prompts the user to also check in for that event after choosing the venue.
- The checkin on Swarm and Foursquare shows the venue as well as the event name in the checkin.
How should this be displayed and represented on an indieweb site?
past checkins as a venue cache
Relying on a system like Swarm+OwnYourSwarm gives access to Swarm's great venue data, but requires checking in via Swarm.
No matter what method initially used to create a checkin post, an existing set of checkins could be used as a cache of venues for future checkins.
For example, Marty McGuire proposed "Moresquare", a Micropub client that caches venues from your existing checkin posts. This could be useful for repeated visits without leaning on (or sending data to) external location services.
The following ideas were iterated on, perhaps even in the wild, but have been abandoned for various reasons.
h-as-checkin explicit object
As a result of a brainstorming session about ActivityStreams and microformats at the 2012 Federated Social Web Summit in San Francisco there was a proposal to use
h-as-* prefixed (sub)types for posts as a way of representing ActivityStreams post types explicitly in microformats.
One of those was
As use of explicit post types have been gradually abandoned in various UIs (being replaced by generic posts with any number of user-optional properties), the use of explicit types in markup has similarly been abandoned (UI leading/driving the plumbing as it were), including h-as-checkin. post type discovery shows some current thinking regarding post types.
Bottom line: Avoid using h-as-checkin.
Swarm, formerly Foursquare and still made by the company by that name, is a popular checkin client.
Swarm Stream View
Swarm Posting UI
Swarm has a single "post" button in the middle of the row of buttons at the bottom of the default homescreen iOS dsiplay that looks like a map drop pin where the outline of the pin has a small arrow on the lower left side.
Tapping it opens the create checkin post UI, which shows:
- your icon in the top left
- the auto-chosen venue to check-into
- "Change location v" drop-down menu
- camera icon (which you can tap and then choose from existing photos or take new photos in the app)
- to post up to 7 photos (a photo or multi-photo) as a secondary aspect of your check-in post
- series of four "badge" or "sticker" icons you can choose from (or tap again to toggle off), some of which apply multipliers to your check-in points, with a "…" ellipsis to open up a menu of more stickers to choose from.
- auto-focused text field to enter a checkin note, prompted with the default text "What are you up to?"
- +(person) icon to add others to your checkin
- lock icon to set a private checkin
- Facebook icon toggle to cross-post your checkin to Facebook
- Twitter icon toggle to cross-post your checkin to Twitter
- ( Cancel ) and ( Check In ) buttons
Swarm will occasionally provide notifications in its mobile app to remind you to checkin at places you may have previously missed. This functionality can also be accessed from the user's profile screen typically with the label "#+ to confirm" where the # is the number of locations not checked in at. The list of places visited can be either accepted by clicking on the green location pin icon or the ... "more" indicator can be chosen to modify the location of the checkin; indicate one was there, but not be checked in; or remove the item from one's timeline.
Checked in by
Swarm allows you to check in your friends if they've enabled the feature. When you tag someone in your checkin, a new checkin on their account is created. This is a separate post from your post.
When you check in to a place where you have been checked in by a friend, the post gets updated with the text, photo's and sticker you chose.
Facebook supports checkin posts.
Geocaching.com and other geocaching silos allow players to publish checkins to locations (which can usually be independently verified by the signing of a logbook at those coordinates, or in the case of some silos by acquiring a password from that logbook).
Former Silo Examples
Silos that support checkins (checkin silos) that have either gone away (site-deaths), or dropped checkin as a feature.
Brightkite was a checkin silo.
Fire Eagle was a checkin silo created by the Yahoo! Brickhouse team in August 2008. It stored a user's location and shared it with other authorized services and inspired other future location services. A user could authorize other services and applications to update or access data via API, allowing a user to update their location once and then use it on any Fire Eagle enabled-website. The intention of Fire Eagle was to serve as a central broker for location data. Services which supported Fire Eagle included Pownce, Dopplr, Brightkite and Moveable Type. It was one of the first sites to use the OAuth protocol to connect services together. The service closed circa February 2013.
Gowalla was a checkin silo.
Dodegeball was one of the earliest popular checkin silos (if not the first?). It was acquired by Google in 2005 and shut down in 2009 being replaced by Google Latitude.